JavaScript 中怎么使用 toLocaleString 对数字格式化

在 JavaScript 中,toLocaleString()最常用、也最规范的数字格式化方式之一,特别适合做金额、千分位、小数位、本地化展示。下面系统讲清楚它的用法与常见问题。


一、最基础用法(千分位分隔)

const num = 1234567.89;

num.toLocaleString();
// 在中文/英文环境下一般输出:1,234,567.89

它会:

  • 自动加 千分位分隔符

  • 根据 浏览器/系统语言环境决定格式


二、指定语言(Locale)

num.toLocaleString('en-US'); // 1,234,567.89
num.toLocaleString('zh-CN'); // 1,234,567.89
num.toLocaleString('de-DE'); // 1.234.567,89

不同地区的区别:

  • en-US, 千分位,. 小数点

  • de-DE. 千分位,, 小数点

  • fr-FR:空格作千分位


三、控制小数位数(最常用)

1. 固定保留 2 位小数

num.toLocaleString('zh-CN', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});
// 1,234,567.89

2. 不足补 0

(12).toLocaleString('zh-CN', {
  minimumFractionDigits: 2
});
// 12.00

3. 最多保留 2 位(不强制)

(12.3456).toLocaleString('zh-CN', {
  maximumFractionDigits: 2
});
// 12.35

四、金额 / 货币格式化(强烈推荐)

const money = 123456.78;

money.toLocaleString('zh-CN', {
  style: 'currency',
  currency: 'CNY'
});
// ¥123,456.78

money.toLocaleString('en-US', {
  style: 'currency',
  currency: 'USD'
});
// $123,456.78

常见币种:

  • CNY 人民币

  • USD 美元

  • EUR 欧元

  • JPY 日元(默认无小数)


五、百分比格式化

const rate = 0.1234;

rate.toLocaleString('zh-CN', {
  style: 'percent',
  maximumFractionDigits: 2
});
// 12.34%

注意:传入的是小数,不是 12.34


六、去掉千分位(少见但有用)

num.toLocaleString('zh-CN', {
  useGrouping: false
});
// 1234567.89

七、与 toFixed() 的区别(很重要)

方法是否千分位本地化返回类型
toFixed()string
toLocaleString()string
(1234.5).toFixed(2);       // "1234.50"
(1234.5).toLocaleString(); // "1,234.5"

展示给用户:用 toLocaleString()
计算或接口传值:用 Number / toFixed


八、实际项目封装示例(前端常用)

function formatNumber(
  value,
  locale = 'zh-CN',
  fraction = 2
) {
  return Number(value).toLocaleString(locale, {
    minimumFractionDigits: fraction,
    maximumFractionDigits: fraction
  });
}

formatNumber(123456.7);
// 123,456.70

九、常见问题总结

1. 返回值是字符串

typeof num.toLocaleString(); // "string"

2. 不能用于精确计算(浮点误差仍存在)

3. Node.js 旧版本 locale 支持不完整

浏览器环境一般没问题


十、一句话总结

toLocaleString() 是前端数字展示的首选方案,特别适合金额、统计数据、国际化场景。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值