爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3685|回复: 1

[混合编程] IDL之for循环的双重陷阱

[复制链接]

新浪微博达人勋

发表于 2019-4-17 16:06:51 | 显示全部楼层 |阅读模式

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

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

x
在使用for循环时,序号习惯上是整型,但是存在着溢出的危险:
for i=0,10 do begin
  print,i*32767
endfor
输出:
       0
   32767
      -2
   32765
      -4
   32763
      -6
   32761
      -8
   32759
     -10
发现这个问题后,我就将序号改为浮点型,但是又发现了以下问题:
for i=0.0,1.0,0.1 do begin
  print,double(i)
endfor
      0.00000000
      0.10000000
      0.20000000
      0.30000001
      0.40000001
      0.50000000
      0.60000002
      0.70000005
      0.80000007
      0.90000010
原本我要计算到i=1.0,可是却没有算到那里,循环提前停了,
因为浮点的小数不确定,据说是所有语言处理浮点数据都存在的问题,
所以,最终值我会再加大一些,才能保证循环的完整

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

新浪微博达人勋

发表于 2019-8-26 10:55:27 | 显示全部楼层
可以设置成长整形,或者无符号的长整形。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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