有效数字修约

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。

相关工具推荐

单位换算器

支持长度、重量、温度、面积、体积等多种单位类型的相互转换

热门 本地

科学计算器

高级数学运算,支持三角函数、对数、指数运算等科学计算,包含内存管理和历史记录

热门 本地

统计学计算器

数据分析工具,支持描述统计、回归分析、概率分布、假设检验等统计计算

热门 本地

方程求解器

一次方程、二次方程、方程组求解,支持图像绘制、牛顿迭代法和数值方法

热门 本地

财务比率计算器

盈利能力、偿债能力、运营能力比率分析,支持图表展示、行业对比和财务健康评分

热门 本地

折扣计算器

计算折扣后价格、节省金额和折扣率,支持折扣率和折数输入

热门 本地

这张卡挂在哪些职业工具箱

相关教程