JavaScript Intl.NumberFormat波兰语本地化1000-9999数字格式异常求助
波兰语数字格式化:给1000-9999区间数字添加千位空格的解决办法
你用Intl.NumberFormat('pl-PL')时,1000到9999之间的数字没自动加空格分隔,这是因为默认配置的分组规则没覆盖4位整数的情况,而波兰语确实要求这个区间的数要加空格分隔。
直接解决代码
给Intl.NumberFormat添加minimumGroupingDigits: 1配置即可:
const amount1 = 123.987; const amount2 = 1234.987; const amount3 = 12345.987; const amount4 = 123456.987; const numberFormat = new Intl.NumberFormat('pl-PL', { minimumGroupingDigits: 1 }); console.log(numberFormat.format(amount1)); // 123,987 console.log(numberFormat.format(amount2)); // 1 234,987(符合预期) console.log(numberFormat.format(amount3)); // 12 345,987 console.log(numberFormat.format(amount4)); // 123 456,987
为什么默认行为不符合预期?
Intl.NumberFormat的分组规则遵循ECMA标准及对应语言的默认设置。波兰语本地化的默认minimumGroupingDigits值为2,意味着只有整数部分达到5位及以上时才会触发千位分隔。将该值设为1后,会强制对所有4位及以上的整数应用分隔符,完全匹配波兰语的数字格式化规则。
内容的提问来源于stack exchange,提问作者Nesh
相关产品推荐
相关产品推荐

