-2

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

这些浮点数始终是 0 到 10 之间的数字,精确到小数点后一位。然而,总数偶尔会偏离这个 1.dp 精度(非常罕见,但我正在处理数十亿次迭代),偏差为 0.01(即我将 2.4 添加到 15.9 并得到 18.31)

这种微小的偏差会导致程序崩溃,那么有什么办法可以缓解呢?

4

2 回答 2

4

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

于 2013-10-01T19:37:03.403 回答
3

0.1是二进制的重复小数,所以不能准确表示。最好使用整数和倍数10进行计算。

于 2013-10-01T19:36:14.587 回答