gpt4 book ai didi

javascript - JavaScript 是否考虑本地小数点分隔符?

转载 作者:数据小太阳 更新时间:2023-10-29 05:39:57 26 4
gpt4 key购买 nike

我有一个网页以用户的本地化格式显示小数,如下所示:

  • 英语:7.75
  • 荷兰语:7,75

如果我在我机器上的 JavaScript 中将两个数字变量加在一起(其中数字取自上述格式的字符串),我会得到以下结果:

  • 英语:7.75 + 7.75 = 15.5
  • 荷兰语:7,75 + 7,75 = 0

如果我要在荷兰用户的机器上运行这段代码,我是否应该期望英语格式的附加项返回 0,而荷兰语格式的附加项返回 15,5?

简而言之:JavaScript 计算是否在其字符串到数字的转换中使用局部小数点分隔符?

最佳答案

这是一个区域感知数字解析器的例子:

function parseLocaleNumber(stringNumber, locale) {
var thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/\p{Number}/gu, '');
var decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/\p{Number}/gu, '');

return parseFloat(stringNumber
.replace(new RegExp('\\' + thousandSeparator, 'g'), '')
.replace(new RegExp('\\' + decimalSeparator), '.')
);
}

它使用传递的区域设置(如果未定义区域设置参数,则使用浏览器的当前区域设置)替换千位和小数点分隔符。

使用德语语言环境设置

var n = parseLocaleNumber('1.000.045,22');

n 将等于 1000045.22

更新:

  • 通过使用正则表达式类 \p{Number} 删除数字解决了 Pointy 的评论。因此它也适用于非阿拉伯数字。
  • 解决了 Orion Adrian 的评论,以支持数字以每四位数字分隔的语言。
  • 添加了语言环境参数以指定不同的语言环境进行解析。

关于javascript - JavaScript 是否考虑本地小数点分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com