带有浮点数的简单算术将四舍五入到错误值

simple arithmetic with floats is rounded to wrong value

本文关键字:四舍五入 错误 浮点数 简单      更新时间:2023-10-16

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

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

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

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

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