如何在JavaScript中将string转换为浮点数?
我正试图从一个数据网格中parsing两个值。
这些字段是数字,当他们有一个逗号(例如554,20),我不能得到逗号后面的数字。
我试过parseInt
和parseFloat
。 我该怎么做?
如果他们打算成为不同的值,试试这个:
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