在 Chrome 中,当区域设置为“es”时,千位分隔符不存在。
如果我使用 4 位数字,没有问题
数据集:
(2500).toLocaleString('en')
"2,500"
(2500).toLocaleString('pt')
"2.500"
(2500).toLocaleString('es')
"2500"
(25000).toLocaleString('es')
"25.000"
为什么会这样?
在 Chrome 中,当区域设置为“es”时,千位分隔符不存在。
如果我使用 4 位数字,没有问题
数据集:
(2500).toLocaleString('en')
"2,500"
(2500).toLocaleString('pt')
"2.500"
(2500).toLocaleString('es')
"2500"
(25000).toLocaleString('es')
"25.000"
为什么会这样?
根据 CLDR,这是预期的行为。“最小分组位数”是 2,这意味着,只有当一个数字在其他 3 位之前有 2 位时,才会出现千位分隔符。显然,这仅适用于 chrome,因为其他浏览器使用的是“旧”规范。
检查这个https://st.unicode.org/cldr-apps/v#/es/Symbols/70ef5e0c9d323e01
我针对特定情况使用的一种可能的解决方法是将其设置为德语区域设置(“de”)而不是西班牙语:
(1000).toLocaleString("de")
“1.000”