You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中获取不同货币对应的小数位数?

如何在JavaScript中获取不同货币对应的小数位数?

当然可以啦!JavaScript里有个非常好用的原生API——Intl.NumberFormat,专门用来处理国际化的数字、货币格式化,用它就能轻松拿到不同货币对应的小数位数。

核心思路

Intl.NumberFormat创建的格式化器,通过resolvedOptions()方法可以获取到该格式化器的最终配置,其中maximumFractionDigits和minimumFractionDigits这两个属性,就是该货币对应的小数位数(绝大多数情况下两者数值一致)。

具体示例

1. 获取美元(USD)的小数位数

// 创建美元的货币格式化器
const usdFormatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
// 获取格式化器的配置选项
const usdOptions = usdFormatter.resolvedOptions();
// 输出小数位数
console.log(usdOptions.maximumFractionDigits); // 结果:2

2. 获取日元(JPY)的小数位数

// 创建日元的货币格式化器
const jpyFormatter = new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' });
const jpyOptions = jpyFormatter.resolvedOptions();
console.log(jpyOptions.maximumFractionDigits); // 结果:0

3. 特殊案例:科威特第纳尔(KWD)

科威特第纳尔的小数位数是3位,我们也能准确获取:

const kwdFormatter = new Intl.NumberFormat('ar-KW', { style: 'currency', currency: 'KWD' });
const kwdOptions = kwdFormatter.resolvedOptions();
console.log(kwdOptions.maximumFractionDigits); // 结果:3

封装成通用函数

如果需要频繁调用,可以封装成一个简单的工具函数,这样用起来更方便:

function getCurrencyDecimalPlaces(currencyCode) {
  // 这里的locale用任意支持的都可以,比如'en-US',因为小数位数是由货币本身决定的
  const formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: currencyCode });
  const options = formatter.resolvedOptions();
  // 直接返回小数位数(max和min通常一致)
  return options.maximumFractionDigits;
}

// 调用示例
console.log(getCurrencyDecimalPlaces('USD')); // 2
console.log(getCurrencyDecimalPlaces('JPY')); // 0
console.log(getCurrencyDecimalPlaces('EUR')); // 2
console.log(getCurrencyDecimalPlaces('KWD')); // 3

注意事项

  • 传入的currencyCode必须是ISO 4217标准的三位货币代码(比如USD、JPY、EUR),否则可能会抛出错误或者返回默认的小数位数。
  • Intl.NumberFormat是ES6之后引入的API,现代浏览器和Node.js(v10及以上)都支持,兼容性不用担心。

备注:内容来源于stack exchange,提问作者Andrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:54:38