我正在尝试从数据网格中解析两个值。这些字段是数字,当它们有逗号时(例如 554,20),我无法获取逗号后的数字。我试过parseInt
和parseFloat
。我怎样才能做到这一点?
如何在 JavaScript 中将字符串转换为浮点数?
IT技术
javascript
parsing
floating-point
2021-02-03 00:35:01
6个回答
如果它们是单独的值,请尝试以下操作:
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) 将字符串转换为浮点数。
便利!
因此,为了解决您的问题,您可以执行以下操作:
var floatValue = +(str.replace(/,/,'.'));
用点代替逗号。
这只会返回 554:
var value = parseFloat("554,20")
这将返回 554.20:
var value = parseFloat("554.20")
所以最后,你可以简单地使用:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
不要忘记它parseInt()
应该只用于解析整数(没有浮点数)。在您的情况下,它只会返回 554。此外,在浮点数上调用 parseInt() 不会对数字进行四舍五入:它将取下它的下限(最接近的较低整数)。
从评论中回答 Pedro Ferreira 问题的扩展示例:
如果文本字段包含数千个分隔符点,1.234.567,99
可以预先用另一个删除replace
:
var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))
如果你像这样扩展 String 对象..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
.. 你可以这样运行
"554,20".float()
> 554.20
也适用于点
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
@GusDeCool 或其他任何试图替换超过一千个分隔符的人,一种方法是使用正则表达式全局替换:/foo/g
。请记住,这.
是一个元字符,因此您必须对其进行转义或将其放在方括号 (\.
或[.]
) 中。这是一种选择:
var str = '6.000.000';
str.replace(/[.]/g,",");
其它你可能感兴趣的问题