有效数字计算器
结果
有效数字位数
- 舍入结果
- 0.00456
- 舍入结果(科学计数法)
- 4.56 × 10⁻³
有效数字是一个数里携带测量信息的那些数字。数它们就是一套作用在「写法」上的规则,数完之后再按指定的位数把它舍成一个近似数。英文页面名里的 sig fig 是缩写,全称是 significant figures;中文统一叫有效数字。规则如下。非零数字都算,所以 123 有三位。夹在两个非零数字之间的零算,因为它在占位:1002 有四位。前导零不算——它们只负责把小数点摆到位——所以 0.005 只有一位有效数字,不是三位。小数点之后的零算,所以 0.004560 有四位。而一个不带小数点的整数末尾的零不算,因为它可能只是在说这个数有多大:1200 有两位有效数字,1200. 有四位。最后这一对就是整套口径的缩影。两个输入是同一个量,差别在于它们各自声明了知道多少——1.2 × 10³ 说测量停在百位,1.200 × 10³ 说一直量到了个位。把小数点写出来就是在做这个声明,所以这条规则不看写出来的形态就没法执行。这个有效数字计算器读一个数、数出它的有效数字位数,再按你选的位数把它舍掉。有两条约定管着舍入,都在这里说明白,而不是让人在结果里自己发现。它是四舍五入并且远离零:1.25 舍到两位是 1.3,−0.004560 舍到两位是 −0.0046,符号不参与判断。以及它不补零:0.004560 要舍到六位,原样返回 0.004560,因为这个数没有六位可给,补上的零等于凭空造精度。舍入会产生进位,进位会改变数的大小:9.99 舍到两位是 10,999 舍到两位是 1000——动的是指数,不是位数。有一条推论值得直说。当舍入产生尾随零时,普通的小数写法显示不出还剩几位:1002.0 舍到两位是 1000,那几个撑住量级的零与「被量出来的零」在写法上分不开。所以页面把舍入结果再按科学记数法印一遍,系数显示位数、指数显示量级:1.0 × 10³。两行并排,歧义就没有了。零在这里算一位。它是一个写出来的数字,而且与前导零不同,它是关于这个量已知的全部,所以算一位而不是不算。左右各有一件要分清的事。按小数位而不是按有效数字舍入是另一件事,归四舍五入那一页:0.004560 舍到两位小数是 0.00,舍到两位有效数字是 0.0046,两个答案差得很远。而把一个数写成系数与指数的形式、却不对它的精度做任何判断,是标准形式那一页。
八个数各自携带的有效数字位数
| 数 | 有效数字位数 |
|---|---|
| 123 | 3 |
| 1002 | 4 |
| 1002.0 | 5 |
| 0.005 | 1 |
| 0.004560 | 4 |
| 1200 | 2 |
| 1200. | 4 |
| 0 | 1 |
八个数,让五条规则每一条都至少用上一次,而决定位数的几种写法也都在里面。中间几行要读仔细:0.005 只有一位,因为它的前导零只定位小数点;而 1002.0 有五位,因为夹在数字之间的零算,小数点之后的零也算。靠下那一对是这条规则最纯粹的样子——1200 有两位有效数字,1200. 有四位,同一个量两种写法,两种关于它知道多少的声明。最后一行是零,它算一位而不是不算,因为它是一个写出来的数字,而且是已知的全部。这一列里每一个数都由回答上面那个输入的同一个内核算出来,所以没有哪一行会与面板矛盾。
公式
123 → 3 位有效数字;1002 → 4 位;0.005 → 1 位;0.004560 → 4 位;1200 → 2 位而 1200. → 4 位;0.004560 舍到 2 位 = 0.0046 = 4.6 × 10⁻³;9.99 舍到 2 位 = 10 = 1.0 × 10¹
- 0.004560
- 要被数位的数,写成普通数字或 e 记法。它可以是任何量级的测量值,正负都可以;符号既不参与计数也不参与舍入,读的只是数字本身
- 0.005 → 1
- 前导零为什么不算。0.005 里 5 前面那三个零唯一做的事,就是把小数点撑在它该在的位置上;携带信息的只有 5,所以记成 0.005 的一次读数有一位有效数字,把它改写成 5 × 10⁻³ 也改变不了这一点
- 1002 → 4
- 中间的零为什么算。1002 里那两个零夹在 1 和 2 之间,占住百位和十位,而这是信息:没有它们,这个数就成了 12 或 102。所以 1002 的每一位都是有效数字
- 1200 → 2、1200. → 4
- 这条规则看的是写法而不是值。在一个不带小数点的整数里,末尾的零可能只是占位,所以不算:1200 有两位有效数字。把小数点写上,等于说这几个零是特意写的,于是 1200. 有四位
- 0.004560 → 4
- 小数点之后的尾随零为什么算。0.004560 末尾那个零在小数点之后,说明它是特意写的,也说明这次测量到了百万分位。它就是第四位有效数字——这也是 0.004560 与 0.00456 值相同、声明不同的原因
- 0.004560 → 0.0046 = 4.6 × 10⁻³
- 按指定位数舍入。四舍五入意味着后面跟 5 时向远离零的方向进,不补零意味着要的位数比现有的多时原样返回。科学记数法那一行同时显示留下来的位数和没有变的量级
有效数字是测量值声明自己精度的方式,它的用途大多在「把结果写下来」这件事上。读到四位小数的天平、刻度到毫米的尺、能分辨百分之一秒的计时器,给出的数里最后一位就是仪器真正看得见的最后一位;把读数记成 0.004560 而不是 0.00456,保住的正是这一点,而有效数字的位数就是它的简写。测量值参与运算时,答案的精度不会超过最弱的那个输入,所以物理、化学与工程里的常规做法是:先算出结果该有几位有效数字,再按这个位数舍入。常用的工作规则是乘除取各因子中位数最少的那一个、加减取各加数中小数位最少的那一个——这也是为什么「按位数舍」与「按小数位舍」是两个不同的操作,而本页只做前一个。化学与物理还把它当作一种检查习惯:答案的有效数字比它的输入还多,说明这个数不是量出来的而是算出来的,也是发现「从显示屏上照抄没动脑子」最快的方式。在课堂上,这本身就是一道要考的题:1200 与 1200. 各是几位,是标准问法,答案取决于写法而不是值。反过来,按小数位舍入是四舍五入那一页的事;而把一个值写成系数与十的幂、完全不对精度做判断,是标准形式那一页。
算例
数出 0.004560 的有效数字位数
- 前导的 0.00 只负责把小数点摆到位,不算
- 4、5、6 三个数字都算;它们后面那个零也算,因为它在小数点之后、是特意写下来的
- 一共四位有效数字
- 舍到四位,正好是这个数已有的位数,所以值原样返回
- 写成科学记数法,系数是同样的四位,指数承载量级:4.560 × 10⁻³
默认值,也是说明「一个数的值」与「它做的声明」不同在哪里的算例。0.00456 与 0.004560 作为值相等,作为测量不同,而末尾那个零就是全部的差别。答案的科学记数法形式说的是同一件事,只是写在了一个零不会被误读成排版的地方:系数 4.560 有四位,它自己说得清清楚楚。
把 0.004560 舍到一位
- 这个数有四位有效数字,而这次只要一位
- 留下第一位,也就是千分位上的 4,再看它后面那一位
- 后面那一位是 6,所以 4 进成 5
- 它右边的一切都丢掉,前导零留在原处:0.005
- 写成科学记数法就是 5 × 10⁻³,系数只有一位
舍到一位是最粗的情形,也是最容易丢掉量级的情形,因为答案 0.005 里保留下来的那个数字只以一个 5 的形式出现。科学记数法那一行把这笔交易摆明了:答案里活下来一位,指数记着它作用于多大的量级。
会改变指数的进位:9.99 舍到两位
- 这个数有三位有效数字,而且全非零
- 留下前两位得到 9.9,再看下一位
- 下一位是 9,于是 9.9 进位——而进位一路推到底,把 9.9 变成了 10
- 舍入后的值大了一个数量级,所以抬上去的是指数,不是位数
- 写成科学记数法就是 1.0 × 10¹,它显示的两位正是普通写法里读成一位的 10
科学记数法那一行为什么值得存在的理由。一个从数末尾冲出去的进位会改变这个数的大小,而普通写法说不清发生了什么:10 可以是十这个数,也可以是一个两位的结果、两位分别是 1 和 0。科学记数法把它定下来——系数 1.0 有两位,指数 1 记着量级。再往上一档同样的事也会发生:999 舍到两位是 1000。
要的位数比这个数还多:123 要五位
- 这个数有三位有效数字,一位都去不掉
- 这次要五位,比它携带的还多
- 舍入从不补零,所以值原样返回,与进来时一模一样
- 计数那一行仍然报三位,因为这个数没有因为被要求而多出两位
计算器拒绝帮忙的那种情形。把 123 补成 123.00 会把三位量出来的数字变成五位,而多出来的两个零,任何当真的人都会把它们读成精度——那正是这一整套规则要防的错误。科学记数法那一行也说明了这个要求为什么做不到:1.23 × 10² 里只有三位,另外两位没有来处。
局限
计数按学校那五条规则走,而其中一条取决于这个数是怎么写的。1200 有两位有效数字、1200. 有四位,没有第三种答案,因为计算器只有写法可依据,并不知道那几个零是不是量出来的。因此,末尾的零本来有效、却省掉了小数点的整数会被少数——如果那几个零有意义,请写 1200.。舍入是四舍五入并远离零,所以后面跟 5 时一定进;银行家舍入(五入双)在这里没有。舍入不补零,所以要求的位数比现有的多时原样返回,计数那一行报的是这个数真正携带的位数。任何输入里的前导零都不保留,007 读成 7。普通的舍入结果那一行显示不出有效的尾随零,所以才用第二行按科学记数法给出同一个值;对 1002.0 舍到两位,普通那一行读作 1000,只有科学记数法那一行 1.0 × 10³ 才透露出位数是二。输入限制在十五位有效数字以内、指数在 ±99 之间,位数必须是 1 到 15 的整数。书写形态如 4.5 × 10⁴、以及千分位分隔符,都像站上别处一样被拒。零算一位有效数字。最后,本页只按有效数字舍入;按小数位舍入是四舍五入那一页的事,两者一般并不一致——0.004560 舍到两位小数是 0.00,舍到两位有效数字是 0.0046。
常见问题
- 有效数字怎么数?
- 非零数字都算,夹在两个非零数字之间的零也算,比如 1002 有四位。前导零一律不算,因为它们只把小数点摆到位,所以 0.005 只有一位。小数点之后的零算,所以 0.004560 有四位。而一个不带小数点的整数末尾的零不算,所以 1200 是两位,1200. 是四位。
- 为什么 1200 只有两位有效数字?
- 因为不带小数点的整数末尾那几个零,可能只是占位——它们可能是在说这个数在千位上,而不是说有人一直量到了个位。写出来的形式分不清这两种情况,所以取保守的读法,只有 1 和 2 算。如果那几个零确实有意义,请写 1200.。
- 有效数字和小数位有什么区别?
- 小数位从小数点往外数,有效数字从第一个非零数字数起。在 1 附近的数上两者差不多,离 1 远的数上就不同了:0.004560 舍到两位小数是 0.00,舍到两位有效数字是 0.0046。按小数位舍入归四舍五入那一页,本页数的是有效数字并按它舍入。
- 为什么要求的位数比这个数还多时不补零?
- 因为补上它们等于凭空造精度。123 有三位有效数字,印成 123.00 就成了五位,读到的人会把最后两位当成量出来的,而没有任何东西量过它们。所以计算器原样返回,计数那一行仍然报三位——这就是它在说这个要求没法满足。
- 为什么舍入结果还要再给一遍科学记数法?
- 因为普通写法显示不出有意义的尾随零。1002.0 舍到两位得到 1000,那几个撑住量级的零与「被量出来的零」看起来一模一样。科学记数法那一行写成 1.0 × 10³,系数装住两位、指数装住量级,歧义就没了。
- 零有几位有效数字?
- 一位。零是一个写下来的数字,而且与 0.005 里的前导零不同,它是关于这个量已知的全部,不是用来定位小数点的标记。把它舍到任何位数都还是 0,因为第一位之后没有东西可以留、也没有东西可以丢。
参考资料
- Significant digits — the definition, the rules for counting them and the conventions for rounding a result to a given number of them — Wolfram MathWorld (United States)
- GB/T 8170-2008《数值修约规则与极限数值的表示和判定》——数值修约(有效位数、修约间隔、进舍规则)的国家标准题录页;修约间隔与有效位数的定义以标准正文为准 — 国家标准馆·国家数字标准馆
- 教育部关于印发义务教育课程方案和课程标准(2022 年版)的通知——该通知的附件清单第 5 项是《义务教育数学课程标准(2022 年版)》;小数的近似数与有效数字的初步认识属于该课标数与代数领域的内容,原文与学段要求以该附件为准 — 中华人民共和国教育部