可能重复:
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)应该给出正确的结果。
然后你期待太多。 – BoltClock 2011-02-17 14:41:54
几分钟前刚刚提出并回答完全相同的问题: http://stackoverflow.com/questions/5029955/decimal-rounding-is-off-for-276-304304/5029982#5029982 使用搜索请下次第一次。 – 2011-02-17 14:42:18