C#中128.01 + 0.01的结果应该是什么

时间:2011-02-17 14:41:04

标签: c# .net math double decimal

  

可能重复:
  Precision of Floating Point
  Floating point arithmetic is too reliable.

嗨,大家好,

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

2 个答案:

答案 0 :(得分:0)

浮点计算本质上是不准确的,因此,这种行为是完全正常的。如果你真的需要更高的准确度,坚持使用小数,但请记住它们是方式,方式比浮点数/双打慢。通常情况下,最好只接受不准确性并根据需要进行舍入。

答案 1 :(得分:0)