0 c++ math programming-languages rounding-error rounding
可能重复:
为什么十进制数不能用二进制表示?
语言c ++我正在声明一个数组,我在其中保存数字(类型为double).然后我开始比较数组中每两个元素之间的差异.例如
a[1] = 0.05
a[2] = 0.1
a[3] = 0.15
Run Code Online (Sandbox Code Playgroud)
所以,当我做以下
if(a[3] - a[2] == a[2] - a[1] )
Run Code Online (Sandbox Code Playgroud)
条件变得虚假!!
调试后,我发现0.05在数组中保存为0.0499 ...... 993,情况类似于0.10和0.15
我怎样才能克服这个问题?