Javascript 如何在一个数字中使用千位分隔符,并将其作为一个数字本身?

Javascript 如何在一个数字中使用千位分隔符,并将其作为一个数字本身?,javascript,jquery,number-formatting,Javascript,Jquery,Number Formatting,我不知道这个问题是否重复,因为我找不到解决我的问题的办法 我有一个数字,比如12345,我想用千位分隔符作为逗号(,),代码是 12345.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 我得到的数据是12345。我想要它作为一个数字 如果我使用“Number()”或“parseFloat()”,它的名称是NaN。我不知道如何将带千位分隔符的字符串转换为带千位分隔符的数字 我的案例有什么解决方案吗?常见的解决方案是编写一个添加逗号的函数: /

我不知道这个问题是否重复,因为我找不到解决我的问题的办法

我有一个数字,比如12345,我想用千位分隔符作为逗号(,),代码是

12345.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
我得到的数据是12345。我想要它作为一个数字

如果我使用“Number()”或“parseFloat()”,它的名称是NaN。我不知道如何将带千位分隔符的字符串转换为带千位分隔符的数字


我的案例有什么解决方案吗?

常见的解决方案是编写一个添加逗号的函数:

//copied from http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
function numberWithCommas(x) {
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    return parts.join(".");
}
更好的解决方案可能是重写默认的toString()方法,这样您就不必在每次计算时来回转换它:

Number.prototype.toString = function numToString() {
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    return parts.join(".");
}

您可以像分配和操作任何普通数字一样分配和操作数字,但在打印时会添加逗号。

数字不能包含
不存在“带千位分隔符的数字”。一个数字就是一个数字(更准确地说,它的域是由IEEE754双精度定义的)。您的确切目标是什么?分隔符使数字成为字符串。思考者:我们甚至不知道你的问题是什么。为什么要将一个数字转换为1000个分隔字符串,然后再转换回来?为什么不直接使用您已有的数字
12345
?Hi@Thinker,如果您希望在公式/计算中使用数值12345,您不需要逗号,对吗?如果你想把逗号放在里面显示,那么一个带逗号的字符串不符合你的需要吗?我认为在这一点上有些混乱。对我来说,重写
到字符串
听起来不是一个好主意。它可能会破坏那些期望
toString
返回有效数字的东西。我宁愿在原型中添加一个新函数……更不用说您的重写函数将无法工作(
x
未定义)