Number.toLocaleString('nb')在Microsoft Edge中不返回挪威语格式怎么办
结论
你的代码写法没有错误,该问题是浏览器底层国际化支持差异导致的:
- 旧版使用EdgeHTML内核的Microsoft Edge没有内置完整的挪威书面语(
nb)数字格式化规则,会自动降级到英语格式规则,因此输出千位分隔符为逗号、小数点为点的"1,000.00" - Chrome以及目前基于Chromium内核的新版Edge都搭载了完整的ICU国际化组件,对
nblocale的格式支持符合预期,可正常输出"1 000,00"
兼容方案
如果需要适配旧版Edge场景,可以增加格式兜底判断:
function formatNbNumber(num) { const result = num.toLocaleString('nb', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); // 识别降级到英语格式的异常结果,手动替换为挪威语格式 if (result.indexOf(',') > -1 && result.indexOf('.') > -1) { return result.replace(/,/g, ' ').replace('.', ','); } return result; }
调用formatNbNumber(1000)即可在全版本浏览器得到符合预期的输出。
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

