舍入是将一个数字替换为位数更少的近似值,以便于记录、比较或用于后续计算。标准四舍五入规则在保留位的下一位为 5 或更大时进一,否则舍去。向下取整(floor)始终朝负无穷方向舍入;向上取整(ceil)始终朝正无穷方向舍入。输入任意数字,即可同时查看 2 位小数、3 位小数、整数以及最近 10、100、1000 的舍入结果,并附 floor 和 ceil 值。
标准舍入、floor 和 ceil 的区别
- 标准四舍五入:2.5 变为 3,2.4 变为 2,-2.5 变为 -2。日常算术中最常用的规则。
- 向下取整(floor,朝 -∞ 舍入):2.9 变为 2,-2.1 变为 -3。在编程中对应 Math.floor,常用于库存计数等场景。
- 向上取整(ceil,朝 +∞ 舍入):2.1 变为 3,-2.9 变为 -2。常用于资源分配,部分单位需要按整单位计。
按位值舍入
按位值舍入会将该位右侧的所有数字归零。4567 舍入到百位得 4600(百位数字 5 因下一位 6 >= 5 而进一);舍入到千位得 5000。对于小数位,3.14159 舍入到 2 位小数得 3.14(第三位小数 1 < 5,故 4 不变)。
银行家舍入法(四舍六入五成双)
与标准四舍五入不同,银行家舍入在遇到 .5 时舍入到最近的偶数:2.5 变为 2,3.5 变为 4。这消除了大量 .5 值单向舍入时的累积偏差。银行家舍入是 IEEE 754 浮点运算和 Python 内置 round() 的默认行为。本计算器采用的是标准四舍五入,而非银行家舍入。
软件中的舍入误差
- 浮点数无法精确表示所有小数:在多数编程语言中 0.1 + 0.2 = 0.30000000000000004。
- 金融软件通常使用整数分运算或定点数库(如 Java 的 BigDecimal)来规避此问题。
- 在显示舍入结果时,应在输出阶段而非中间计算阶段执行舍入,以减少累积误差。
FAQ
Q: floor 和「向下取整」是一回事吗?
A: 对正数而言相同。对负数而言,floor 朝负无穷方向取整(-2.3 变为 -3),而截断(朝零取整)得 -2。本计算器使用 floor,不是截断。
Q: 怎么舍入到有效数字而不是小数位?
A: 有效数字从第一个非零数字开始计数。将 0.004567 舍入到 3 位有效数字,从 4 起保留三位,得 0.00457。本计算器按小数位和位值舍入,不支持有效数字舍入。
Q: 这个计算器用的是银行家舍入吗?
A: 不是。本计算器使用标准四舍五入(遇 5 进一),不采用银行家舍入(四舍六入五成双)。银行家舍入常见于金融和科学计算软件中。