在 Javascript 中,常用的四舍五入方法有多种,适用于不同场景,以下是详细介绍:
1.Math.round():四舍五入到最接近的整数
Math.round() 是最基础的四舍五入方法,作用是将数字四舍五入为最接近的整数(返回值为数字类型)。
规则:
- 若小数部分 ≥ 0.5,则向上取整;
- 若小数部分 < 0.5,则向下取整;
- 负数处理:遵循 “绝对值四舍五入后保留符号”(例如 -2.6 四舍五入为 -3,因 -3 比 -2 更接近 -2.6)。
示例:
Math.round(2.3); // 2(小数部分0.3 < 0.5,向下取整)Math.round(2.6); // 3(小数部分0.6 ≥ 0.5,向上取整)Math.round(-2.3); // -2(绝对值0.3 < 0.5,向下取整后保留负号)Math.round(-2.6); // -3(绝对值0.6 ≥ 0.5,向上取整后保留负号)Math.round(5); // 5(整数直接返回)2.Math.floor() - 向下取整
Math.floor() 总是向下的方向取整:
Math.floor(4.9) // 结果是 4Math.floor(4.1) // 结果是 4Math.floor(-4.1) // 结果是 -53. Math.ceil() - 向上取整
Math.ceil() 总是向上的方向取整:
Math.ceil(4.1) // 结果是 5Math.ceil(4.9) // 结果是 5Math.ceil(-4.1) // 结果是 -44.Math.trunc() - 直接截断
Math.trunc() 直接去掉小数部分:
Math.trunc(4.9) // 结果是 4Math.trunc(4.1) // 结果是 4Math.trunc(-4.9) // 结果是 -45.toFixed(n):保留指定小数位数并四舍五入
toFixed(n) 是 Number 类型的方法,用于将数字四舍五入后保留 n 位小数(返回值为字符串类型)。
规则:
- n 为必填参数(0 ≤ n ≤ 20),表示保留的小数位数;
- 第 n+1 位小数 ≥ 5 则第 n 位进 1,否则舍去;
- 若原数字小数位数不足 n 位,会补 0 凑齐。
示例:
(3.1415).toFixed(2); // "3.14"(第3位小数1 < 5,舍去)(3.1455).toFixed(2); // "3.15"(第3位小数5 ≥ 5,第2位进1)(10).toFixed(3); // "10.000"(整数补0凑齐3位小数)(0.615).toFixed(2); // 注意:可能返回"0.61"(因浮点数精度问题,建议结合其他方法处理)注意:
toFixed() 可能因 Javascript 浮点数精度问题(如 0.1 无法精确表示)导致结果不符合预期,需谨慎使用。
6. 自定义方法:保留 n 位小数(返回数字类型)
若需要保留 n 位小数且返回数字类型,可通过 “放大倍数 → 四舍五入 → 缩小倍数” 实现(本质是利用 Math.round() 扩展)。
实现逻辑:
- 将原数字乘以 10^n(放大 n 位,转为整数);
- 用 Math.round() 对放大后的数四舍五入;
- 再除以 10^n(缩小回原量级)。
示例代码:
// 保留n位小数的四舍五入(返回数字)function roundToN(num, n) { const power = Math.pow(10, n); // 10的n次方 return Math.round(num * power) / power;}roundToN(2.345, 2); // 2.35(保留2位小数)roundToN(5.674, 1); // 5.7(保留1位小数)roundToN(100, 3); // 100(保留3位小数,整数不变)优势:返回数字类型,避免 toFixed() 的字符串转换问题;精度问题较 toFixed() 更可控。
总结
- 需四舍五入为整数:用 Math.round();
- 需保留 n 位小数且返回字符串:用 toFixed(n)(注意浮点数精度);
- 需保留 n 位小数且返回数字:用自定义方法(Math.round(num * 10^n) / 10^n);
- 高精度场景(如金额计算):建议使用第三方库(如 decimal.js)避免浮点数误差。

