你的身体里大约有 7×10²⁷ 个原子。读作”七乘十的二十七次方”,就是 7 后面跟 27 个零。这一课的傻问题是:这到底是多少?
如果这个数字对你毫无感觉,别担心:几乎对谁都没感觉。在一项针对美国成年人的实验里,将近一半的人把”一百万”放在一千和十亿的正中间,好像这几个词之间的距离一样。其实差得远。这一课给你四件工具,让超大数字重新有意义:数零、给零起名字、在合适的刻度上比较,以及不用计算器就能估算。
选一张牌吧:♣ 适合零基础,♦ 适合不怕简单公式,♠ 适合想看符号推导。随时可以换。
数零:科学记数法
新手
拿一粒沙。把十粒排成一排:10。把十排并在一起,就是一片 100。再把十片摞起来,就是一块 1000 粒的立方体。
每做一次,就乘以十,数字就多 一个零。诀窍就这一个:每多一个零,就是乘以 10。
所以不用把零一个个写出来,数一数就行。1000 有三个零,写成 10³(“十的三次方”)。一百万有六个零:10⁶。7×10²⁷ 的意思是”7 后面跟 27 个零”。
数零能避免大数字最傻的错误:不小心漏掉一个零,结果就错了十倍。
进阶
把 7 后面写 27 个零,既麻烦又容易出错。科学记数法解决了这个问题:前面的数在 1 到 10 之间,再乘以 10 的若干次方,这个次数叫指数。指数说的是小数点移动几位。
- 7000000 = 7×10⁶:小数点向左跳 6 位。
- 0.0003 = 3×10⁻⁴:指数是负的,说明小数点往另一边跳。这是个很小的数,不是负数。
计算时,相乘就把指数相加,相除就相减:(2×10³) × (4×10⁵) = 8×10⁸。
前面那个数的小数位说明你知道得多精确:7×10²⁷ 是”大约 7”;7.0×10²⁷ 是”精确到十分位的 7”。
计算器和程序用字母 E 写同样的东西:7e27 就是 7×10²⁷。
技术
| ♦ 里的说法 | ♠ 里的写法 |
|---|---|
| 前面的数 | 尾数 a,1 ≤ |a| < 10 |
| 指数 | n ∈ ℤ(整数) |
| 小数点移动几位 | n = ⌊log₁₀ |x|⌋ |
| 相乘就把指数相加 | 10ᵐ · 10ⁿ = 10ᵐ⁺ⁿ |
| 你知道得多精确 | 有效数字 |
| 用字母 E | E 记数法;IEEE 754 浮点数(双精度) |
任何实数 x ≠ 0 都可以唯一地写成 x = a·10ⁿ,其中 1 ≤ |a| < 10,n ∈ ℤ。取对数,log₁₀|x| = n + log₁₀|a|,且 0 ≤ log₁₀|a| < 1:指数是对数的整数部分,n = ⌊log₁₀|x|⌋,尾数保存小数部分。科学记数法就是一张随身对数表,所以乘法变成了指数相加。
有效数字藏在尾数里:7×10²⁷ 只给出一位有效数字,7.0×10²⁷ 给出两位。把它写成 7 后面 27 个零,看起来像是声称 28 位都准确,其实没人知道。
计算机用的是同一个思路,只不过是二进制。双精度数(IEEE 754)保存 53 位二进制尾数和一个指数:最大值为 2¹⁰²⁴ − 2⁹⁷¹ ≈ 1.8×10³⁰⁸,整数只在 2⁵³ − 1 以内是精确的(MDN)。10²⁷ 完全放得下,但在 JavaScript 里 7e27 + 1 === 7e27 的结果是 true:那个 1 低于精度,丢了。
给零起名字:词头
新手
三个零一组,就有一个名字,你已经在不知不觉中用了好几个:
- **千(k)**是一千:一千米就是一公里。
- **兆(M)**是一百万:1200 万像素的照片有 1200 万个点。
- **吉(G)**是十亿:1 GB 是十亿字节。
- **太(T)**是一万亿:1 TB 的硬盘能存一万亿字节。
每上一级都乘以 1000。
这里有个只有中文才会碰到的陷阱:词头三个零一组,而中文数数是四个零一组:万(10⁴)、亿(10⁸)。所以换算总要多想一步:英文的 million 是”百万”,billion 是”十亿”,trillion 是”万亿”。另外,“兆”现在表示一百万(兆瓦、兆字节),但在古代指万亿,读旧书时要小心。
进阶
词头是加在单位前面、把它乘以 10 的某次幂的字。每个词头都有一个一个字母的符号(十 da 是两个字母)。国际单位制(SI)一共有 24 个。
| 词头 | 符号 | 数值 |
|---|---|---|
| quetta | Q | 10³⁰ |
| ronna | R | 10²⁷ |
| 尧(yotta) | Y | 10²⁴ |
| 太(tera) | T | 10¹² |
| 吉(giga) | G | 10⁹ |
| 兆(mega) | M | 10⁶ |
| 千(kilo) | k | 10³ |
| 毫(milli) | m | 10⁻³ |
| 微(micro) | µ | 10⁻⁶ |
| 纳(nano) | n | 10⁻⁹ |
两端的四个,ronna、quetta、ronto 和 quecto,是 2022 年新加的,因为全世界的数据量很快就会超过 10²⁴。
有两个细节很重要:
- 小写和大写不一样:m 是毫(千分之一),M 是兆(一百万)。1 mm 和 1 Mm 之间差十亿倍。
- 千永远是 1000。 计算机领域有时把”千”当 1024 用,但其实有专门的词头 kibi(Ki)。GiB 和 GB 相比,前者大 7.4%。
技术
| ♦ 里的说法 | ♠ 里的写法 |
|---|---|
| 词头、符号 | k = 10³,M = 10⁶,G = 10⁹ … Q = 10³⁰ |
| 小写和大写 | m = 10⁻³ ≠ M = 10⁶ |
| kibi,1024 | Ki = 2¹⁰(IEC 80000-13) |
| GiB 和 GB 相比 | GiB / GB = 2³⁰ / 10⁹ ≈ 1.074 |
| 加在单位前面 | 不可分割的符号:km² = (10³ m)² = 10⁶ m² |
24 个 SI 词头都是 10³ 的幂,只有百、十、分、厘(10²、10¹、10⁻¹、10⁻²)因为习惯而保留。第 27 届国际计量大会(2022)新增了 R、Q、r 和 q,明确的理由有两个:数据科学很快就需要表示超过 10²⁴ 的量,而且要赶在非官方名称流行开来之前给出正式名称。
《国际单位制手册》规定了三条常被违反的规则:
- 词头符号和单位符号组成不可分割的符号,乘方同时作用于两者:1 km² = (10³ m)² = 10⁶ m²,而不是 10³ m²。同样,2.3 cm³ = 2.3×10⁻⁶ m³。
- **词头不能叠加:**写 nm,不写 mµm。
- 千克是唯一自带词头的基本单位,所以它的倍数加在”克”上:10⁻⁶ kg 写作 mg,不写 µkg。
SI 词头严格表示 10 的幂:“1 千比特是 1000 比特,不是 1024 比特”。2 的幂有自己的词头,从 kibi(2¹⁰)到 quebi(2¹⁰⁰),定义在 IEC 80000-13 中。数越大,差别越大:kibi 比 kilo 大 2.4%,gibi 比 giga 大 7.4%,quebi 比 quetta 大 26.8%……不过最后这个目前还没人碰到。
看到英文 billion,先想”十亿”;看到 trillion,想”万亿”。三个零一组和四个零一组,换算时多数一遍。
比较:数量级和对数刻度
新手
“一百万”和”十亿”听起来都只是”很多”。想感受区别,把它们换成时间:
- 一千秒约 17 分钟:一杯咖啡的工夫。
- 一百万秒将近 12 天:一次假期。
- 十亿秒将近 32 年:半辈子。
- 一万亿秒约 31700 年。
一百万和十亿之间的差距,就像一次假期和半辈子之间的差距。阶梯每上一级都是乘以 1000。
所以比较差别很大的东西时,要看它们有几个零,而不是看数字本身。零的个数相同,就算一个是另一个的两倍,也算”同一个量级”。
进阶
一个数的数量级是离它最近的 10 的幂。一个人身高的数量级是 10⁰ 米(一米),地球的直径是 10⁷ 米的数量级,可观测宇宙是 10²⁶ 米的数量级。相差一个数量级,就是相差十倍。
要把它们画在一起,就用对数刻度:每一格都乘以同样的倍数,比如乘以 10 或乘以 1000。在从 0 到十亿的普通(线性)尺子上,一百万只在千分之一的位置:紧贴着零。而在对数刻度上,一千、一百万和十亿间隔相等,因为每两个之间都是乘以 1000。
两种尺子都有用,用途不同。线性尺子显示差值(“多多少”),对数尺子显示比值(“是多少倍”)。
2013 年的一项研究请美国成年人把大数字放到线性尺子上。大约一半的人放对了。其余的人几乎都把一百万放在中间附近,好像一千、一百万和十亿间隔相等:他们跟着词走,而不是跟着数走。
技术
| ♦ 里的说法 | ♠ 里的写法 |
|---|---|
| 离它最近的 10 的幂 | 数量级(x) = round(log₁₀ x) |
| 每一格都乘以同样的倍数 | 坐标 u = log₁₀ x:比值恒定 ⇒ 距离恒定 |
| 相差十倍 | Δ = log₁₀(x₂ / x₁) |
| 好像一千、一百万和十亿间隔相等 | 分段线性启发(Landy 等,2013) |
令 u = log₁₀ x,乘以 k 就是平移固定距离 log₁₀ k。对数刻度把比值变成差值,把幂变成斜率:在双对数坐标里,y ∝ xᵖ 是一条斜率为 p 的直线。
OpenStax 把数量级定义为 round(log₁₀ x)。注意阈值:四舍五入的分界在 √10 ≈ 3.16,而不是 5。所以 9000 的数量级是 4,尽管它的科学记数法指数是 3。按这个规则,质子(10⁻¹⁵ 米)和可观测宇宙(10²⁶ 米)相差 log₁₀(10²⁶/10⁻¹⁵) = 41 个数量级。
Landy、Silbert 和 Goldin(《认知科学》,2013)发现,大约一半的参与者把 10³ 到 10⁹ 的数按线性放置,其余几乎都采用分段线性启发:在同一个词内部(“百万""十亿”)是线性的,而不同的词之间等距排列。分段组对无效的政策策略也更乐观。作者把原因归于数词的词汇结构,而不是计算能力差。
动手试试:零的阶梯
选择前面的数和指数,或者直接跳到一个参照。看看它完整写出来是什么样、用中文怎么读、落在阶梯的哪里。
不用计算器的估算:费米方法
新手
你的心脏一辈子要跳多少次?不知道答案,也能粗略算出来:
- 心脏大约每秒跳一次。
- 80 年大约是 25 亿秒。
- 相乘:大约 25 亿次心跳。
这不精确。可能是 20 亿,也可能是 30 亿。但肯定不是 2000 万,也不是 2000 亿。你把零的个数算对了,而比较大小时,这才是关键。
这叫费米估算,以物理学家恩里科·费米命名。诀窍是把一个无从下手的问题拆成你知道的小块,再乘起来。
进阶
费米方法有四条规则:
- 把问题拆成因子,每个因子都能大致确定。
- 不知道某个因子,就在合理的最小值和最大值之间夹住它,取中间的值。
- 只保留一位数字:你要的是零的个数,不是小数。
- 最后拿已知的东西核对。
它比看上去更管用,因为误差会部分抵消:一个因子估高了,另一个估低了,乘积反而更接近。
现在回到开头的问题:7×10²⁷ 是怎么来的? 要数原子,就需要摩尔:一包 6×10²³ 个东西,就像”一打”是一包 12 个。一摩尔水大约重 18 克,每个水分子有 3 个原子(两个氢、一个氧)。
假设一个 70 千克的人全是水:70000 克 ÷ 18 克 ≈ 3900 摩尔水,× 3 ≈ 11700 摩尔原子,× 6×10²³ ≈ 7×10²⁷ 个原子。这和发表过的人体估算一致。如果用真实的成分(按质量算,氧和碳更多,它们更重),得到 6.7×10²⁷:零的个数一样。
技术
| ♦ 里的说法 | ♠ 里的写法 |
|---|---|
| 把问题拆成因子 | N = Π fᵢ ⇒ log N = Σ log fᵢ |
| 误差会部分抵消 | 独立误差:σ(log N) ≈ √n · σ(log f) |
| 在合理的最小值和最大值之间夹住它 | 几何平均 √(x_min · x_max) |
| 一包 6×10²³ 个东西 | N_A = 6.022 140 76×10²³ mol⁻¹(精确值) |
| 一摩尔水大约重 18 克 | M(H₂O) = 2·1.008 + 15.999 = 18.015 g/mol |
费米估算是一个乘积 N = Π fᵢ,在对数刻度上就是一个和:log N = Σ log fᵢ。如果每个因子都有独立的乘性误差,其对数的标准差为 σ,总误差按 √n·σ 增长,而不是 n·σ。五个因子都”准到 2 倍以内”时,结果通常在 2^√5 ≈ 4.7 倍以内:仍在同一个数量级。
对于夹在 x_min 和 x_max 之间的未知因子,几何平均 √(x_min·x_max) 就是对数刻度上的中点。OpenStax 用它估算驼鹿的质量:在 10² 到 10³ 千克之间,约 3×10² 千克。
70 千克人体的原子数,用两个独立的模型:
- **全当成水:**70000 / 18.015 × 3 × N_A = 7.0×10²⁷。
- 按质量成分(O 61%、C 23%、H 10%、N 2.6%,WebElements)和常规原子量:6.7×10²⁷。其余 3.4% 是重原子(Ca、P、K……),对总数的贡献不到 1%。
两者都和 Freitas 给出的 ≈ 7×10²⁷(《纳米医学》第一卷,3.1)相符。自 2019 年 SI 重新定义以来,阿伏伽德罗常数是精确值,所以全部不确定性都来自模型,而不是 N_A。
最后的挑战
三句话总结
- 每个零都是乘以 10,科学记数法就是数零:7×10²⁷ 是 7 后面 27 个零,约 7000 亿亿亿个原子,也就是你身体里的原子。
- 词头三个零一组给零起名字(千、兆、吉……一直到 quetta),而中文四个零一组:billion 是十亿,trillion 是万亿。
- 比较和估算时都要数零:关心倍数时用对数刻度,把问题拆成因子,并检查数量级对不对。
参考资料
- 国际单位制词头:NIST,公制词头和国际计量局,2022 年国际计量大会第 3 号决议(ronna、quetta、ronto、quecto)。使用规则(不可分割的符号、不能叠加、千克、2 的幂):国际计量局,《国际单位制手册》第 3 节。二进制词头:NIST。中文词头名称:国务院关于在我国统一实行法定计量单位的命令(1984),表 5。
- 亿 = 万万:汉典;兆的今义和古义:汉典。英文 billion、octillion(美国用法):Merriam-Webster。
- 数量级和参考量级:OpenStax,《大学物理》第一卷,1.1。费米估算:OpenStax,1.5。
- 成年人如何放置大数字:Landy、Silbert、Goldin,Cognitive Science 37, 775(2013),doi:10.1111/cogs.12028。
- 人体原子数:Freitas,《纳米医学》第一卷,3.1,并用 WebElements(谢菲尔德大学)的成分和 CIAAW 原子量自行核算。
- 阿伏伽德罗常数(精确值):NIST CODATA。双精度数的极限:MDN,Number.MAX_VALUE。
- 宇宙年龄(用于互动组件):普朗克 2018,arXiv:1807.06209,137.87 ± 0.20 亿年,并与 WMAP(NASA)的 137.7 亿年对照。
**本课是怎样做的:**在 Claude 的帮助下,根据以上资料调研和撰写,并于 2026 年 10 月 13 日用第二个来源核对。没有单独链接的数字是根据这些资料计算的。插图均为原创。