爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2901|回复: 7

[求助] 求助论坛的高手们关于字符型转实数型的问题

[复制链接]

新浪微博达人勋

发表于 2016-9-7 16:34:22 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
求助论坛的高手们关于字符型转实数型的问题
小弟编程过程中需要将字符型的数字转换成实数行的,但是小数点后不是0的转换正常,但是小数点后面是0的就不对,比方字符型20转换成实数就变成0.2了,而字符型20.1转成实数型就是20.1,转换正确,这是为什么啊,求论坛的大神们教教哇

具体可以看下面的结果 里面的4行2列,7行1列,11行3列就有问题

                               
登录/注册后可看大图


我用的是read(shuju(4,1:num),"(F8.2)")rain 这个语句  shuju是character型,rain是real型



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-7 16:37:09 | 显示全部楼层
发现图没上来,补一下图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-7 16:40:02 | 显示全部楼层
这个图数完整的数据,上图中有写数据没显示

补一个全的

补一个全的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-7 20:21:23 | 显示全部楼层
这种问题发生的原因在于read里的F8.2,在字符串里没有小数点时,read语句读到的数据就类似于整型数据,用了F8.2就会把数据缩小到小数点后,这种情况用F8.0就没有问题。所以解决办法就是区分两种形式的字符串,可以在read前加入一个if判断,看看这个字符串里有没有小数点,小数点的ASCII码值是46,有的话用F8.2的read语句,没有的话用F8.0的语句。这样能从根源解决问题。
当然了,如果你觉得麻烦且刚好所有数据都是这样大小的话,可以在最后把小于零的数乘以100可以得到同样效果。
以上
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-7 20:49:31 来自手机 | 显示全部楼层
我得用你说得第一种方法,你的意思是说在字符串中查找是否有ASCII为46得字符是吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-7 21:59:16 来自手机 | 显示全部楼层
还想问一下具体该怎么办啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-7 22:26:48 | 显示全部楼层
Nono 发表于 2016-9-7 20:21
这种问题发生的原因在于read里的F8.2,在字符串里没有小数点时,read语句读到的数据就类似于整型数据,用了F ...

用index函数完美解决,太谢谢你了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-7 22:47:37 | 显示全部楼层
须佐能乎 发表于 2016-9-7 22:26
用index函数完美解决,太谢谢你了

不客气,解决了就好
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表