如何在JavaScript中将string转换为浮点数?

我正试图从一个数据网格中parsing两个值。
这些字段是数字,当他们有一个逗号(例如554,20),我不能得到逗号后面的数字。
我试过parseIntparseFloat 。 我该怎么做?

如果他们打算成为不同的值,试试这个:

 var values = "554,20".split(",") var v1 = parseFloat(values[0]) var v2 = parseFloat(values[1]) 

如果他们的目的是为了一个单一的价值(如法语,其中一半写0.5)

 var value = parseFloat("554,20".replace(",", ".")); 

你有没有试过这样做? :p

 var str = '3.8';ie alert( +(str) + 0.2 ); 

+(string)将string转换为浮点数。

便利!

所以为了解决你的问题,你可以这样做:

 var floatValue = +(str.replace(/,/,'.')); 

用逗号replace逗号。

这将只返回554:

 var value = parseFloat("554,20") 

这将返回554.20:

 var value = parseFloat("554.20") 

所以最后,你可以简单地使用:

 var fValue = parseFloat(document.getElementById("textfield").value.replace(",",".")) 

不要忘记, parseInt()应该只用于parsing整数(没有浮点)。 在你的情况下,它只会返回554.另外,调用一个float的parseInt()将不会围绕该数字:它将采用其底数(最接近的较低的整数)。

如果你像这样扩展String对象

 String.prototype.float = function() { return parseFloat(this.replace(',', '.')); } 

..你可以像这样运行它

 "554,20".float() > 554.20 

与点一起工作

 "554.20".float() > 554.20 typeof "554,20".float() > "number" 

你可以使用这个function。 它将用逗号replace逗号,然后parsing该值并在此之后再次调整逗号的值。

 function convertToFloat(val) { if (val != '') { if (val.indexOf(',') !== -1) val.replace(',', ''); val = parseFloat(val); while (/(\d+)(\d{3})/.test(val.toString())) { val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2'); } } return val; } 

@GusDeCool或任何其他人试图取代超过一千个分隔符,一种方法是正则expression式全局replace: /foo/g 。 请记住这一点. 是一个元字符,因此您必须将其转义或放在括号( \.[.] )中。 这里有一个选项:

 var str = '6.000.000'; str.replace(/[.]/g,","); 

我有同样的问题,除了事先不知道千位分隔符和小数点分隔符是什么。 我最终写了一个图书馆来做到这一点。 如果您对此感兴趣,请访问https://github.com/GuillaumeLeclerc/number-parsing