浮点数的简单算术舍入到错误的值

时间:2013-10-01 19:30:26

标签: c++ floating-point floating-accuracy

在我的程序中,我有一个特定数字的运行总数,在main之前声明为float,以便是通用的,并且在每次迭代时我都会添加和减去浮点数。

这些浮点数始终为0到10之间的数字,小数点后一位。但是,从这个1.d.p.偶尔总是偏离(很少,但我正在处理数十亿次迭代)。准确度,0.01(即我加2.4到15.9,得到18.31)

这种轻微偏差会导致程序崩溃,那么有什么方法可以缓解它吗?

2 个答案:

答案 0 :(得分:4)

如果您总是有1位小数,则将所有数字乘以10并使用整数运算!二进制浮点通常不能表示小数小数值。使用二进制浮点数进行计算会导致小错误被放大。使用整数进行计算是完全正确的。

答案 1 :(得分:3)

0.1是二进制的重复小数,因此无法准确表示。最好使用10的整数和倍数进行计算。