单一数据类型未按预期添加。有人可以向我解释为什么这样做吗?
问题如下所示:
Dim h As Single
h += CSng(703.35) 'result: h = 703.35
h += CSng(703.35) 'result: h = 1406.7
h += CSng(703.35) 'result: h = 2110.0498 WTF
单指IEEE754。IEEE754不能表示每个值。您很有可能具有IEEE754中不存在的值,并且得到的结果是最接近的近似值。
如果您需要的值与我们头脑一致的人所期望的“精确”近似值相匹配(请注意术语上的矛盾),则应使用小数而不是单数。
需要明确的是:十进制和单精度都必须逼近-您只能做很多事情来将一定范围的可能值装入有限字节。但是它们的近似方式不同。十进制适用于像金钱这样的离散测量;双精度适用于连续测量
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句