标签:string EQ 2.38 2.3 IDL print eq 精度
在任何语言中,数据的精度问题都会存在。比如在IDL中,就存在以下现象。
IDL> a = 2.3 + 0.08
IDL> print, a
2.38000
IDL> print, a eq 2.38
0
IDL> a = 2.38
IDL> b = 2.38D
IDL> print, a eq b
0
查看了一些网上的搜索结果,大多数人的解决方法都是通过判断两者之差是否小于一个极小值,从而判断是否相等。
另附上一个简单解决方法:
其实在IDL里,可以通过把双精度变量转换成字符串类型,然后判断。
;这里的变量均为浮点型
IDL> a = 2.3 + 0.08
IDL> print, a eq 2.38
0
IDL> print, string(a) eq string(2.38)
1
;对于双精度
IDL> a = 2.3 + 0.08D
IDL> help, a
A DOUBLE = 2.3800000
IDL> print, string(a) eq string(2.38)
0
IDL> print, string(a) eq string(2.38D)
1
标签:string,EQ,2.38,2.3,IDL,print,eq,精度 来源: https://www.cnblogs.com/enviidl/p/16356495.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。