2011-02-17 67 views
0

可能重复:
Precision of Floating Point
Floating point arithmetic is too reliable.应该是什么的128.01 + 0.01 C#中的结果

嗨,大家好,

我碰到一个比较奇怪的看着问题就来了,我运行一个循环从82.01到169.06以0.01为步长,但是当我达到128.01并且(128.01 + 0.01)时,它给出了128.019999999998而不是128.02。 我对所有这些计算都使用double。如果我使用十进制来做这些计算,它会很好地运行,我是否缺少一个非常基本的基础?我在网上发现了一些文章和讨论,解释了十进制是做这些计算的正确数据类型,但仍然是一个基本计算像(128.01 + 0.01)应该给出正确的结果。

+7

然后你期待太多。 – BoltClock 2011-02-17 14:41:54

+1

几分钟前刚刚提出并回答完全相同的问题: http://stackoverflow.com/questions/5029955/decimal-rounding-is-off-for-276-304304/5029982#5029982 使用搜索请下次第一次。 – 2011-02-17 14:42:18

回答

0

浮点计算本质上是不准确的,所以这种行为是完全正常的。如果你真的需要更高的准确性,坚持小数,但请记住,他们的方式,方式比浮动/双打慢。通常情况下,最好接受不准确的部分并根据需要进行调整。

相关问题