【发布时间】:2011-08-21 18:24:19
【问题描述】:
可能重复:
Why can't decimal numbers be represented exactly in binary?
语言 c++ 我正在声明一个数组,并在其中保存数字(双精度类型)。然后我开始比较数组中每两个元素之间的差异。 例如
a[1] = 0.05
a[2] = 0.1
a[3] = 0.15
所以 当我执行以下操作时
if(a[3] - a[2] == a[2] - a[1] )
条件变为假!!
调试后发现0.05在数组中保存为 0.0499......993 情况与0.10和0.15类似
我该如何克服这个问题?
【问题讨论】:
-
110 亿次重复。
-
@Rob:我不同意。这里的问题是“我怎样才能克服这个问题?”,而不是“是什么导致了这个问题?”。但是,我敢打赌这是其他问题的重复 :)
标签: c++ math programming-languages rounding rounding-error