有效数字修约
GB/T 8170-2008 四舍六入五成双:保留 n 位有效数字 / n 位小数 / 修约间隔,与普通四舍五入差异对照
在线数值修约工具:按 GB/T 8170-2008「四舍六入五成双」规则修约,支持保留 n 位有效数字、保留 n 位小数、 按修约间隔(0.5 / 0.05 / 0.005 / 整数 / 自定义正数)三种模式,单值或批量多行处理; 结果表逐行给出修约值、保留位数标注与「普通四舍五入」对照列,规则不同的行自动高亮; 大/小数值提供 1.23e-7 风格的科学计数法切换与双显。 实现基于十进制字符串 + BigInt 定点运算,不经二进制浮点, 1.005 → 1.00、1.015 → 1.02 这类 toFixed 翻车场景逐位精确。适合实验室数据、检测报告与质量记录修约。 全部计算在浏览器本地完成,不上传任何数据。
为什么不能用 toFixed / Math.round:二进制浮点里 1.005 实际是 1.00499999999999989…, (1.015).toFixed(2) 给 1.01、(2.675).toFixed(2) 给 2.67,而按 GB/T 8170 的十进制精确值应得 1.02 与 2.68。 本工具全程十进制定点运算,不受此陷阱影响。
修约结果(GB/T 8170-2008)
| 原值 | 修约值(GB/T 8170) | 保留标注 | 普通四舍五入 | 差异 |
|---|---|---|---|---|
| 1.005 | 1.00 | 2 位小数 | 1.01 | 规则不同 |
| 1.015 | 1.02 | 2 位小数 | 1.02 | 一致 |
| 0.15 | 0.15 | 2 位小数 | 0.15 | 一致 |
| 0.25 | 0.25 | 2 位小数 | 0.25 | 一致 |
| 2.5 | 2.50 | 2 位小数 | 2.50 | 一致 |
| 3.5 | 3.50 | 2 位小数 | 3.50 | 一致 |
| -1.25 | -1.25 | 2 位小数 | -1.25 | 一致 |
| 2.3 | 2.30 | 2 位小数 | 2.30 | 一致 |
| 2.25 | 2.25 | 2 位小数 | 2.25 | 一致 |
| 1.2345e-7 | 0.00 | 2 位小数 | 0.00 | 一致 |
规则速记:四舍六入五成双——舍弃位 <5 舍、>5 进;恰好为 5 时,5 后非零进一,5 后全零看 5 前一位(偶舍奇进)。 负数先按绝对值修约再补符号(GB/T 8170 口径)。高亮行为 GB/T 8170 与普通四舍五入结果不同的行(两者均按十进制精确值计算)。
修约口诀
四舍六入五成双
五后非零就进一
五后全零看奇偶
五前为偶应舍去
五前为奇则进一
- · 1.005 → 2 位小数 → 1.00(5 后全零,5 前 0 为偶 → 舍)
- · 1.015 → 2 位小数 → 1.02(5 前 1 为奇 → 进)
- · 1.0051 → 2 位小数 → 1.01(5 后非零 → 进)
- · 2.5 → 整数 → 2;3.5 → 4
1.005 陷阱:浮点 vs 十进制
(1.005).toFixed(2) → "1.00" 碰巧对
(1.015).toFixed(2) → "1.01" 错,应 1.02
(2.675).toFixed(2) → "2.67" 错,应 2.68
Math.round(0.15*10)/10 → 0.1 错,应 0.2
根因:IEEE 754 双精度用二进制存数,1.015、2.675 这类十进制小数存的是近似值(1.015 实际是 1.01499999999999990…),toFixed / 先乘后除作用在近似值上就会修错。 本工具把输入当十进制字符串解析、用 BigInt 做定点整数运算,修约判断逐位精确。
修约间隔怎么用
修约间隔 0.5(1/2 单位):把值除以 0.5,按整数口诀修约,再乘回 0.5—— 2.3 ÷ 0.5 = 4.6 → 5 → 2.5; 2.25 ÷ 0.5 = 4.5(恰好半)→ 取偶 4 → 2.0。 0.05、0.005 同理(1/20、1/200 单位),整数即间隔 1。检测报告的「按 0.5 分度报出」、 计价最小单位 0.01、包装规格 2.5 kg 一档,都是修约间隔的实际用法。
#GB/T 8170 数值修约是什么?
GB/T 8170-2008《数值修约规则与极限数值的表示和判定》规定了我国科技与生产领域统一的数值修约方法, 核心口诀是「四舍六入五成双」:拟舍弃位小于 5 时舍去,大于 5 时进一;恰好等于 5 时不能机械地「逢五进一」, 而要看 5 之后还有没有非零数字(有则进一)、5 之后全零时看 5 前一位的奇偶(偶舍奇进)。 这样修约能让「进一」与「舍去」在大量数据中各占一半,避免系统性偏大或偏小(统计上无偏)。 本工具按该规则实现保留 n 位有效数字、保留 n 位小数与修约间隔三种模式,并提供普通四舍五入对照列, 规则不同的行高亮提示。全部计算在浏览器本地完成,数据不上传。
四舍六入五成双:规则逐条拆解
记拟舍弃部分的第一个数字为判断起点:① 舍弃位 1~4 → 舍(1.234 → 1.23);② 舍弃位 6~9 → 进(1.236 → 1.24); ③ 舍弃位为 5 且后面还有非零数字 → 进(1.2351 → 1.24,真实值比一半多); ④ 舍弃位为 5 且后面全零(或没有数字)→ 看 5 前一位:偶数则舍、奇数则进(1.225 → 1.22,1.235 → 1.24)。 负数按绝对值修约后再补负号(−1.25 → −1.2)。0 不参与修约判断,保留几位小数就写几个 0。 特别注意:判断必须基于十进制精确值——在二进制浮点上做这些判断,5 可能早已变成 4.9999…, 这正是 1.005 → 1.00、1.015 → 1.02 这类经典案例的考点,也是本工具用 BigInt 定点实现的原因。
与银行家舍入(Banker's Rounding)的关系
「五成双」在数学上等价于 round half to even(半数取偶),即通常说的银行家舍入—— 恰好一半时向偶数修约,其余按四舍五入。GB/T 8170 与理想银行家舍入的一致点:恰好 5 后全零时取偶; 不同点在于 GB/T 8170 明确写出「五后非零进一」(本质是大于一半,任何正确实现都会进一), 并额外规定了修约间隔(0.5、0.05、0.005 单位)与报出位数的表达方式。 实务中更常见的偏差来自实现层面:不少语言的 round(x+0.5) 或 toFixed 作用在二进制浮点上, 而 Java BigDecimal 的 HALF_EVEN、Python decimal 的 ROUND_HALF_EVEN 这类十进制定点实现与本工具口径一致。 判断一条流水线是否「真·银行家舍入」:看它对 1.015(保留 2 位)给不给 1.02。
有效数字、小数位与修约间隔怎么选
保留 n 位有效数字关心「相对精度」,适合测量值与科学计数:1.2345e-7 保留 3 位有效 → 1.23e-7(即 0.000000123), 且修约后尾部的 0 也是有效数字(1.2 保留 3 位有效要写 1.20)。保留 n 位小数关心「绝对精度」,适合报出值与账面数字: 1.005 保留 2 位小数 → 1.00。修约间隔是「按固定步长取最近档位」:间隔 0.5 表示结果只能是 0.5 的整数倍 (2.3 → 2.5、2.25 → 2.0)。三种模式可互相印证:间隔 0.05 与保留 2 位小数档位相同, 但对恰好压线的数(如 1.225 ÷ 0.05 = 24.5 恰半取偶 → 1.20)间隔法先除后取偶,判断路径更直观。 写报告时按行业标准要求的模式选用即可。
#常见问题 (FAQ)
1.005 保留两位小数到底是 1.00 还是 1.01?
按 GB/T 8170 十进制精确值是 1.00:舍弃部分恰为 5(5 后全零),5 前一位是 0(偶数)→ 舍。普通四舍五入给 1.01。注意 (1.005).toFixed(2) 给 "1.00" 是「碰巧对」——二进制里 1.005 是 1.00499…;换 1.015 就翻车成 1.01(正确 1.02)。判断实现是否正确要看十进制精确值。
修约间隔 0.5 是什么意思?
结果只能落在 0.5 的整数倍上(…1.5、2.0、2.5…):把原值除以 0.5 按整数口诀修约再乘回。2.3 → 2.5(4.6 进到 5),2.25 → 2.0(4.5 恰半取偶 4)。GB/T 8170 称之为「0.5 单位修约」,0.05、0.005 是同法的 1/20、1/200 单位修约。
修约后的 0 什么时候不能省?
有效数字模式下尾部 0 是精度的声明:1.234 保留 3 位有效是 1.23,但 1.2 保留 3 位有效必须写 1.20;小数位模式同理:1.005 保留 2 位小数写 1.00 而不是 1。这些 0 表示修约所到的位,本工具的「保留标注」列会写明位数。
批量数据会上传吗?
不会。所有修约都在你的浏览器本地完成(BigInt 十进制定点运算),不发送任何网络请求,输入与设置仅保存在本地 localStorage。
相关工具推荐
单位换算器
支持长度、重量、温度、面积、体积等多种单位类型的相互转换
科学计算器
高级数学运算,支持三角函数、对数、指数运算等科学计算,包含内存管理和历史记录
统计学计算器
数据分析工具,支持描述统计、回归分析、概率分布、假设检验等统计计算
方程求解器
一次方程、二次方程、方程组求解,支持图像绘制、牛顿迭代法和数值方法
财务比率计算器
盈利能力、偿债能力、运营能力比率分析,支持图表展示、行业对比和财务健康评分
折扣计算器
计算折扣后价格、节省金额和折扣率,支持折扣率和折数输入