谁能解释一下为什么下面的结果不等于零?
? CSng("0.199881939681229")
? CSng(0.1998819)
? CSng(CSng(0.199881939681229) - CSng(0.1998819))
第一行返回 0.1998819 第二行也返回 0.1998819 但第三行返回 4.470348E-08
如果两个数字在单精度数据类型中完全由相同的值表示,那么这个数字是从哪里来的。
谁能解释一下为什么下面的结果不等于零?
? CSng("0.199881939681229")
? CSng(0.1998819)
? CSng(CSng(0.199881939681229) - CSng(0.1998819))
第一行返回 0.1998819 第二行也返回 0.1998819 但第三行返回 4.470348E-08
如果两个数字在单精度数据类型中完全由相同的值表示,那么这个数字是从哪里来的。
似乎对此的另一个答案已被删除,所以我会自己回复。
VBA 返回 0.1998819 但实际上并没有将两个数字存储为同一个二进制文件。
请参阅http://www.binaryconvert.com/result_float.html?decimal=048046049057057056056049057051057054056049050050057 和 http://www.binaryconvert.com/result_float.html?decimal=04804604905705705605604907
几乎相同但不一样。
谜团解决了,即时窗口中浮动的 VBA 表示是问题所在。