工程里遇到的小算法和 JavaScript 技巧都记在这一页。每则可以单独复制,新内容继续向下追加。

01. JavaScript 如何四舍五入到 n 位小数?

要把 12.3456 四舍五入到 2 位小数,可以组合 Math.round() 和 10 ** n。

直接用

js可复制后修改
function roundTo(value, n) {
  const factor = 10 ** n;
  return Math.round(value * factor) / factor;
}

roundTo(12.3456, 2); // 12.35
roundTo(12.344, 2);  // 12.34
roundTo(12, 2);      // 12

计算过程

  • Math.round(x):把 x 四舍五入到整数。
  • 10 ** n:得到 10 的 n 次方。

保留 2 位小数时,n 等于 2,factor 就是 100:

text可复制后修改
12.3456 × 100 = 1234.56
Math.round(1234.56) = 1235
1235 ÷ 100 = 12.35
图保留两位小数时,先乘 100、取整,再除以 100

注意

roundTo() 返回数字,所以 roundTo(12, 2) 的结果是 12,不会保留末尾的两个 0。只做页面展示时,可以使用 toFixed():

js可复制后修改
(12).toFixed(2); // "12.00"

JavaScript 使用二进制浮点数,1.005 之类的值可能出现精度误差。金额计算不要直接使用这个函数,应改用整数最小单位或精确小数方案。