2015-07-03 75 views
1

任何人都可以解释为什么下面的结果不等于零吗?在VBA中取走2个单精度数字时出现奇怪的结果

? CSng("0.199881939681229") 
? CSng(0.1998819) 
? CSng(CSng(0.199881939681229) - CSng(0.1998819)) 

一号线返回0.1998819 二号线返回0.1998819太 但第三返回4.470348E-08

哪里是这个数字的,如果这两个数字都完全按相同值的单代表未来精确的数据类型。

+0

这很奇怪,它应该是3.968122E-08,你使用CSNG的任何原因?当我使用变量类型单我得到正确的答案。 –

+0

* note *我能够复制这个问题,很奇怪,必须与VBA如何处理转换有关。当我检查变量时,他们都是正确的,除了减法后。 –

+0

在下面看到我的评论,两个数字都被稍微不同的二进制字符串所适用,即使VBA为两者返回相同的值。 – PaMcD

回答