javascript中四舍五入主要有math.round()(仅整数位)、tofixed()(指定小数位但返回字符串)、手动缩放法(如math.round(num*100)/100,返回数值)及toprecision()(控制有效数字,返回字符串)。

JavaScript 中对 Number 类型进行四舍五入,主要依靠两个内置机制:Math 对象的静态方法和 Number 原型上的实例方法。它们用途不同、返回类型不同、行为细节也有差异,选错容易引发隐性问题。
Math.round():只保留整数位的四舍五入
它把任意数字四舍五入到最接近的整数,不支持指定小数位。
- 规则明确:小数部分 ≥ 0.5 向上取整(如 3.5 → 4),3.49 → 3)
- 负数也按同样逻辑:-2.5 → -2(因为 -2 > -2.5),-2.51 → -3
- 返回值是 number 类型,不是字符串
Number.prototype.toFixed():按指定位数四舍五入并转为字符串
这是最常用的小数位控制方式,但要注意它的“假精确”特性。
- 语法:
num.toFixed(2)表示保留两位小数,自动四舍五入 - 返回值是 字符串,比如
1.2.toFixed(2)得到"1.20",不是1.2 - 参数范围通常是 0–20,超出可能抛
RangeError - 如果原始值是字符串或 null,需先转成 number,否则会报
TypeError
需要真正“数值型 + 指定精度”时怎么办?
直接用 Math.round() 配合数量级缩放,是最可靠的手动方案。
- 例如保留 2 位小数:
Math.round(num * 100) / 100 - 封装成函数更安全(避免浮点误差累积):
function roundTo(num, digits) { const p = Math.pow(10, digits); return Math.round(num * p) / p; } - 这样返回的是 number 类型,且不会补零(
roundTo(2.1, 2)→2.1,不是"2.10")
别忽略 toPrecision() 和其他辅助方法
当你要控制的是“有效数字位数”,而不是小数点后几位,toPrecision() 更合适。
-
123.456.toPrecision(3)→"123"(3 位有效数字) -
0.0012345.toPrecision(3)→"0.00123" - 同样返回字符串,且可能用科学计数法(如
123456.toPrecision(3)→"1.23e+5")
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











