四舍五入计算器

输入数字和保留位数,立即按四舍五入得到结果,并揭示 JavaScript 浮点存储导致的常见舍入偏差。

—

使用方法

  1. 在「要四舍五入的数字」填入任意实数(示例 3.14159)。
  2. 在「保留位数」填入要保留的小数位数(示例 2,表示保留两位小数)。
  3. 点击「计算」或直接按回车,得到舍入后的结果。
  4. 下方「四舍五入对照表」列出常见数字与对应的舍入结果,前 12 行可见,可加载更多或导出。

这个四舍五入计算器能解决什么问题

四舍五入计算器解决的是「把一个带很多小数位的数字按指定精度截断」这个高频动作,常用于金额、占比、测量值和报表口径的统一。它能直接告诉你 Number.toFixed 在这种精度下的真实输出,而不是你脑子里以为的「四舍五入」。典型场景包括:把 3.14159 收成两位小数的 3.14、把单价保留两位小数对账、把百分比保留一位小数、以及排查「为什么 1.005 保留两位小数变成 1.00」这类前端坑。本页只做数值舍入,不做四舍五入相关的统计分组(可用百分位计算器单独处理)。

计算原理与变量说明

本页核心只有一句:结果 = Number(x.toFixed(d))。先调用 x.toFixed(d) 得到舍入后的字符串,再用 Number() 转回数字。

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

示例:3.14159 保留 2 位小数。调 (3.14159).toFixed(2) 得字符串 "3.14",再 Number("3.14") 得数字 3.14。该数字与控件默认值、对照表第 1 行逐位一致。

浮点陷阱示例:1.005 保留 2 位,直觉应为 1.01,但真实结果是 "1.00"——原因同上,1.005 无法用二进制精确表示,存储值略小于 1.005,舍入后落在 1.00。需要精确十进制舍入时,应改用整数缩放或专门的十进制库。

输入范围与对照表

下表列出常见数字在指定保留位数下的真实输出(来自浏览器原生 toFixed)。带「浮点陷阱」的行说明:显示值偏离直觉,是因为二进制存储误差,而非计算错误。

原数保留位数四舍五入结果说明
3.1415923.14正常
9.8765429.88正常
2.34522.350.5 恰为中点向上取整
-2.3452-2.35负数同样向上取整
1234.567801235取整数
1234.567811234.6保留 1 位
0.5010.5 向上取整为 1
2.5032.5 向上取整为 3
1.00521.00浮点陷阱:真实值略小于 1.005
0.61520.61浮点陷阱:真实值略小于 0.615
99.9991100.0进位到整数
2.67522.67浮点陷阱:真实值略小于 2.675
8.57528.57浮点陷阱:真实值略小于 8.575
0.12520.130.125 二进制可精确表示,正常向上
共 14 行,已显示 12 行

结果边界与舍入说明

常见问题

toFixed 是四舍五入还是银行家舍入?

规范写的是「四舍五入到最近、中点取偶」,但实际受二进制存储误差影响,经常出现看起来不像四舍五入的结果,例如 2.675.toFixed(2) 得 "2.67" 而非 2.68。

为什么 1.005 保留两位小数得到 1.00 而不是 1.01?

1.005 无法用二进制双精度精确表示,内存里实际是 1.0049999…,toFixed 按这个略小的值舍入,得到 "1.00"。需要精确十进制舍入请改用整数缩放或专用库。

保留位数能填小数吗?

不能。toFixed 的位数必须是整数;填 2.5 会被取整或报错,本页会提示请填整数。

负数怎么处理?

符号保留,绝对值按同样规则舍入,例如 -2.345 保留两位得 -2.35。

超过多少位会出错?

toFixed 的位数超过 100 会抛 RangeError,本页把上限设为 20;日常 2~4 位已足够。

很大的整数会准吗?

超过 2^53(9007199254740991)的整数在 JavaScript 中已丢精度,舍入结果不可信,应先转成字符串处理。

这个工具免费吗?

免费、本地计算、不限制次数,无需注册即可使用。

我的数据会上传吗?

不会。全部计算在当前浏览器本地完成,不发起任何网络请求,可在开发者工具 Network 面板自查。

相关工具