javascript数字转字符串首选tofixed()处理固定小数位(自动四舍五入补零),tolocalestring()和intl.numberformat支持本地化千分位、货币等格式,自定义需求可组合使用。

JavaScript 中把数字转为指定格式的字符串,核心方法是 Number.prototype.toLocaleString()、Number.prototype.toFixed()、Intl.NumberFormat,以及字符串拼接或正则辅助处理。选哪个取决于你要的格式类型:千分位、小数位数、货币、百分比、科学计数法,还是自定义分隔符。
保留固定小数位并四舍五入(含补零)
用 toFixed(n) 最直接,返回字符串,自动四舍五入并补零到 n 位小数:
-
(123.4).toFixed(2)→"123.40" -
(123.456).toFixed(1)→"123.5" -
(0).toFixed(3)→"0.000"
⚠️ 注意:toFixed() 基于原始数字值,不考虑本地化(如小数点始终是英文点),且对非常大或非常小的数可能失效(会转成科学计数法字符串)。
按地区习惯加千分位、小数点和货币符号
toLocaleString() 和 Intl.NumberFormat 支持本地化格式,更灵活可靠:
-
(1234567.89).toLocaleString('zh-CN')→"1,234,567.89" -
(1234567.89).toLocaleString('de-DE')→"1.234.567,89"(德语用点分千位、逗号作小数点) -
(1234.5).toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })→"¥1,235"(自动取整,日元无小数)
推荐用 Intl.NumberFormat 实例复用,性能更好:
const fmt = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });<br>fmt.format(123.4) // "123.40"
自定义格式(比如金额前补 ¥、小数位可变、强制两位)
组合使用 toFixed() 或 Intl + 字符串拼接:
- 简单补前缀:
'¥' + (123.456).toFixed(2)→"¥123.46" - 避免
toFixed对整数补零问题(如100.toFixed(2)是"100.00",符合多数场景) - 若需“有小数显示两位,无小数不显示”,可用
Intl配置:{ minimumFractionDigits: 0, maximumFractionDigits: 2 }
特殊格式:百分比、科学计数法、带单位
原生方法也能覆盖常见需求:
- 百分比:
(0.123).toLocaleString(undefined, { style: 'percent', minimumFractionDigits: 1 })→"12.3%" - 科学计数法:
(1234567).toExponential(2)→"1.23e+6" - 带单位(如 KB/MB):需手动计算,再用
toLocaleString格式化数值部分,最后拼单位
不复杂但容易忽略细节,关键是先明确格式目标,再选最匹配的 API。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











