在我的程序中,我有一个特定数字的运行总数,在main之前声明为float,以便是通用的,并且在每次迭代时我都会添加和减去浮点数。
这些浮点数始终为0到10之间的数字,小数点后一位。但是,从这个1.d.p.偶尔总是偏离(很少,但我正在处理数十亿次迭代)。准确度,0.01(即我加2.4到15.9,得到18.31)
这种轻微偏差会导致程序崩溃,那么有什么方法可以缓解它吗?
答案 0 :(得分:4)
如果您总是有1位小数,则将所有数字乘以10并使用整数运算!二进制浮点通常不能表示小数小数值。使用二进制浮点数进行计算会导致小错误被放大。使用整数进行计算是完全正确的。
答案 1 :(得分:3)
0.1
是二进制的重复小数,因此无法准确表示。最好使用10
的整数和倍数进行计算。