VB:单数据类型错误添加

时间:2014-03-28 16:11:57

标签: vb.net

单数据类型未按预期添加。有人可以向我解释为什么这样做吗?

问题如下所示:

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

1 个答案:

答案 0 :(得分:2)

单指IEEE754。 IEEE754无法表达每一个值。您很可能拥有IEEE754中不存在的值,并且您得到的结果是最接近的近似值。

如果你需要的价值观符合我们肉食人类倾向于同意的价值,那就是"确切的"近似(注意矛盾),你应该使用小数,而不是单个。

要明确:十进制和单一都被强制近似 - 只有这么多你可以做的是将这样一系列可能的值拟合成有限字节。但他们的近似方式是不同的。十进制适用于金钱等离散测量; double适用于连续测量