toFixed() 方法可将数字转为指定小数位的字符串,自动四舍五入并补零;但存在浏览器兼容性问题,不适用于 NaN 或 Infinity;替代方案包括 Math.trunc 截断或 Intl.NumberFormat 实现国际化与多种舍入模式。

用 toFixed() 方法最直接,它能把数字转成保留指定位数小数的字符串。
用 toFixed() 控制小数位数
toFixed(n) 是数字对象的方法,参数 n 表示保留的小数位数(0–20),返回值是字符串类型。注意:它会四舍五入,且对负数、科学计数法表示的数字也有效。
-
(3.14159).toFixed(2)→"3.14" -
(1.999).toFixed(2)→"2.00"(自动补零) -
(123).toFixed(3)→"123.000"
注意 toFixed 的潜在问题
它在某些浏览器中对极小或极大数值可能表现不一致(比如 1e21.toFixed(0) 在旧版 IE 中报错),而且会强制四舍五入——如果需要“向下取”或“向上取”到指定小数位,不能只靠它。
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
- 避免对
NaN或Infinity调用,会抛错 - 想截断而非四舍五入?先用
Math.trunc(num * 10**n) / 10**n再格式化 - 要兼容老环境或处理边界值,可加一层安全判断:
typeof num === 'number' && !isNaN(num) ? num.toFixed(n) : '0'
替代方案:使用 Intl.NumberFormat(更灵活)
如果需要国际化(如千分位、不同小数点符号)、或更精细控制舍入方式(如 roundingMode: 'trunc'),推荐用 Intl.NumberFormat:
-
new Intl.NumberFormat('en', { maximumFractionDigits: 2, minimumFractionDigits: 2 }).format(3.1415)→"3.14" - 支持
roundingMode: 'floor'、'ceil'等(现代浏览器支持) - 返回字符串,天然支持本地化格式(比如德语用逗号作小数点)
简单封装一个安全的固定小数函数
兼顾健壮性和常用需求,可以这样写:
function toFixedStr(num, digits = 2) {
if (typeof num !== 'number' || isNaN(num)) return '0';
return Number(num.toFixed(digits)).toString();
}这个版本能防止 toFixed 返回带多余指数的字符串(如 1e-7.toFixed(2) 得 "0.00",但某些场景下你可能希望保持为 "0.00" 而非 "0"),同时确保结果是干净的十进制字符串。

















