如何将带有逗号千位分隔符的字符串解析为数字?

2022-08-30 03:07:28

我有一个字符串,我正在尝试将其解析为数字。我尝试使用 ,结果为 2。我想逗号是问题所在,但是我如何以正确的方式解决此问题?只需删除逗号?2,299.00parseFloat

var x = parseFloat("2,299.00")
console.log(x);

答案 1

是,删除逗号:

let output = parseFloat("2,299.00".replace(/,/g, ''));
console.log(output);

答案 2

删除逗号是潜在的危险,因为正如其他人在注释中提到的,许多区域设置使用逗号来表示不同的东西(如小数位)。

我不知道你从哪里得到你的绳子,但在世界上的一些地方"2,299.00" = 2.299

该对象可能是解决此问题的好方法,但不知何故,他们设法仅使用API而没有对应:(IntlIntl.NumberFormat.format()parse

以任何 i18n 合理的方式将包含区域性数字字符的字符串解析为机器可识别数字的唯一方法是使用利用 CLDR 数据的库来涵盖格式化数字字符串的所有可能方法 http://cldr.unicode.org/

到目前为止,我遇到的两个最好的JS选项: