科学记数法计算器

输入一个数值,先按尾数必须落在 1 与 10 之间的规则归一化成科学记数法,再给出程序日志常用的 E 记法,以及把指数锁到 3 的倍数、便于对齐 k 与 M 与 G 的工程记数法,最后按所选位数做有效数字舍入。零是特例,会单独给出提示而不是报错。数据在浏览器本地计算,不上传。

0.00045 → 4.5 × 10⁻⁴ = 4.5e-4

换算规则:n = floor(log10|x|);a = x ÷ 10ⁿ;工程记数法把指数取成 3 的整数倍。

本页的核心结论:同一个数的科学记数法写法是唯一的,因为尾数被要求落在 1 到 10 之间——0.00045 只能是 4.5 × 10⁻⁴,写成 45 × 10⁻⁵ 就不算标准形式;而工程记数法为了让尾数对齐 k、M、G 三个前缀,会把同一个数拉到 450 × 10⁻⁶,尾数可以大于 10,这正是两者外观上最大的差别。

使用方法

  1. 「数值」框填任意一个十进制数,示例 0.00045。它接受整数、小数,也接受 6.022e23 这种本身就带 e 的写法;光标停在框里按回车即换算,不必去点按钮。
  2. 「保留有效数字位数」决定结果尾数保留几位,示例 4 位,可切 3、4、5、6,切换后立即重算。
  3. 结果区先给出科学记数法与 E 记法,下方卡片再补上工程记数法,以及按所选位数舍入后的写法。
  4. 不改数据也能看到示例:0.00045 在打开页面时就已经算出 4.5 × 10⁻⁴ 与 4.5e-4,下方对照表默认展开前六行。
  5. 点「加载更多」展开其余六行,「复制对照表」取制表符文本,「导出 CSV」下载带字节序标记的文件,表格软件打开不乱码。
  6. 输入 0 不会报错,页面会说明 0 无法写成科学记数法、结果仍为 0,其余情况才会给出具体提示。

这个科学记数法计算器能解决什么问题

这个科学记数法计算器(原站内名『科学计数法记数法计算器』,是机器翻译把「计数法」与「记数法」两个同义词叠在一起的结果)解决的是「把同一个数在几种标准书写形式之间来回切换」。科研报告、工程图纸、程序日志与数据导出对同一串数字的写法要求并不一致:论文正文习惯写成 4.5 × 10⁻⁴,程序日志与 JSON 里用 4.5e-4,而电子标注电容、电感这类元件时又常用 450 × 10⁻⁶ 这种指数锁在 3 的倍数的工程记数法。

同一分类下的几个兄弟页分工不同:百分比计算器处理百分数与小数之间的换算,平均值计算器与中位数计算器做统计汇总,圆面积计算器与周长计算器做几何量计算。它们改变的是数值大小,本页改变的是同一个数的书写形式。

这类换算最容易出错的地方不是换算本身,而是几位有效数字、负号与指数符号三者混在一起时的可读性。把 4.5 × 10⁻⁴ 手抄成 4.5 × 104 或 4.5 × 10-4,在正式文稿里都算错。

计算原理与变量说明

设输入数值为 x,本页先把 x 拆成「尾数 a」与「指数 n」两个部分,规则固定为:

三段公式原样写下来就是 n = floor(log10|x|)、a = x ÷ 10ⁿ、工程指数 = floor(floor(log10|x|) ÷ 3) × 3。反向也成立:给定尾数与指数,用 x = a × 10ⁿ 就能还原原数。

一、归一化区间被写死成 1 ≤ |a| < 10,所以同一个数只有一种标准写法。 这一点与「保留几位小数」不同:1404 可以写成 1404.0,也可以写成 1.4 × 10³ 或 14.04 × 10²,但只有 1.404 × 10³ 的尾数落在闭开区间里,因此它是唯一的标准形式。判断尾数是否越界只看两件事:绝对值是否不小于 1、是否小于 10。1404 的尾数 1.404 满足条件,14.04 与 0.1404 都不满足,前者偏大、后者偏小。

二、工程记数法把指数锁到 3 的倍数,目的是对齐 k、M、G。 10³ 是千(kilo)、10⁶ 是兆(mega)、10⁹ 是吉(giga),把指数取成 3 的整数倍之后,尾数就直接落在 1 到 1000 之间,做单位换算时换掉前缀即可,不必再心算指数偏移。1404 在工程记数法里仍是 1.404 × 10³,因为它的十进制指数正好是 3 的倍数;而 12345678 会变成 12.345678 × 10⁶,尾数跨过了 10。这也是看工程记数法时不能套用「尾数必须小于 10」的原因。

三、前导零不算有效数字,所以 0.004500 是 3 位而不是 7 位。 有效数字从第一个非零数字开始数起,小数点前面那串 0 只是占位符。整数末尾的零若无小数点,通常也不计入有效位:9800000000 只有 9 与 8 两位有效数字;一旦改写成 9.80 × 10⁹,末尾的零因为带了小数点就转为有效位,变成 3 位。这也是「整数不要随手补零」的由来,随手补零会改变别人对测量精度的判断。

四、科学记数法只是书写形式,不改变浮点的精度上限。 计算机里 0.1 加 0.2 不等于 0.3,根源是二进制无法精确表示多数十进制小数;把 0.1 写成 1e-1 并不会让它变精确,只是换了一种写法。按所选位数舍入得到的 1.2346 × 10⁷ 同样不是二进制里真正存储的值,它只是对真实值的一次显示近似,把舍入后的数再拿去运算会把误差一起带进去。

完整示例(数值仅作演示)

示例条件:数值 0.00045,保留 4 位有效数字,结果由本页算法复算得到。

把同样的数值填进工具区即可得到相同结果,示例数值均为演示,不代表任何实测数据。

原数与科学记数法、E 记法、工程记数法对照表

下表十二行是同一批数值在三种记数法下的对照,第一行 0.00045 就是本页的默认示例,所有取值都取自同一套换算规则。

原数科学记数法E 记法工程记数法
0.000454.5 × 10⁻⁴4.5e-4450 × 10⁻⁶
14041.404 × 10³1.404e31.404 × 10³
123456781.234568 × 10⁷1.234568e712.345678 × 10⁶
0.000000929.2 × 10⁻⁷9.2e-7920 × 10⁻⁹
-78400-7.84 × 10⁴-7.84e4-78.4 × 10³
6.022e236.022 × 10²³6.022e23602.2 × 10²¹
98000000009.8 × 10⁹9.8e99.8 × 10⁹
0.0000011 × 10⁻⁶1e-61 × 10⁻⁶
315360003.1536 × 10⁷3.1536e731.536 × 10⁶
0.55 × 10⁻¹5e-1500 × 10⁻³
-0.000075-7.5 × 10⁻⁵-7.5e-5-75 × 10⁻⁶
2700002.7 × 10⁵2.7e5270 × 10³

读表要抓两点。一是同一行的三种写法数值完全相等,只是指数口径不同,1404 在三列里分别是 1.404 × 10³、1.404e3、1.404 × 10³,因为它的指数正好是 3 的倍数,科学记数法与工程记数法重合。二是负数的负号只作用在尾数上,−78400 的三列都带负号,指数本身不随正负改变。

下表把「有效数字位数」单独列出来。它看的是数字里真正有意义的部分,而不是字符长度,前导零与无小数点的末尾零都不计入。

数值有效数字位数说明
0.0045003前导零占位不计
14044四位都有效
1.20e33末尾零带小数点算有效
0.000452只有 4 与 5 有效
6.022e234尾数四位全有效
98000000002整数末尾零不计

下表把每个数保留 4 位小数,也就是尾数写成 X.XXXX 这种共 5 位有效数字的形态,用来演示舍入之后尾数与指数如何配合。舍入只动尾数,指数保持不变。

原数舍入到 4 位小数
123456781.2346 × 10⁷
0.000123456781.2346 × 10⁻⁴
987654.3219.8765 × 10⁵
-314159265-3.1416 × 10⁸

舍入到 4 位小数时,12345678 变成 1.2346 × 10⁷,0.00012345678 变成 1.2346 × 10⁻⁴,987654.321 变成 9.8765 × 10⁵,−314159265 变成 −3.1416 × 10⁸。

结果边界、舍入与适用说明

常见问题

为什么 0.00045 的指数是 −4 而不是 −3?

指数由 log10|x| 向下取整得到。log10(0.00045) 约等于 −3.347,向下取整是 −4 而不是 −3。取 −4 之后尾数 0.00045 ÷ 10⁻⁴ 等于 4.5,正好落在 1 到 10 之间;若取 −3,尾数会变成 0.45,小于 1,不满足归一化要求。

工程记数法为什么会冒出 450 这种大于 10 的尾数?

工程记数法把指数钉在 3 的倍数上,尾数因此允许落在 1 到 1000 之间。0.00045 的指数被从 −4 拉到 −6,尾数就必须变成 450 才能保持数值不变。它对齐的是 k、M、G 这些按千进位的工程前缀,而不是像科学记数法那样只要求尾数小于 10。

0.004500 为什么只算 3 位有效数字?

有效数字从第一个非零数字开始数,小数点前的 0 只是占位。判定时先去掉前导零,再看末尾的零是否带小数点;不带小数点的整数末尾零通常不计,所以 9800000000 只有 2 位有效数字。前导零一律不计,是这一栏最容易记错的地方。

数很大时 E 记法与科学记数法有什么区别?

两者的尾数与指数完全一样,只是排版不同。科学记数法把指数写成 10 的上标,便于纸面阅读;E 记法写成 a 后接 e 再接指数,是纯文本,能被程序直接解析,例如日志里的 1.234568e7。同一批数字在本页的两列里是等价的。

输入 0 为什么不直接算科学记数法?

因为 0 没有对数,log10(0) 未定义,归一化那一步无从下手。约定俗成的处理是把 0 单独拿出来,本页给出「0 无法写成科学记数法,结果仍为 0」的提示,而不是报错或凭空给出一个指数。

舍入到 4 位小数之后还能还原原数吗?

不能完整还原。12345678 舍入成 1.2346 × 10⁷ 之后,末尾被丢掉的 5678 已经不在结果里,反算回来只是近似值。舍入适合阅读与报告,需要继续参与运算时应保留原始数值,否则误差会逐次累积。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。计算在当前浏览器本地完成,不会上传输入内容。

相关工具