如何在 JavaScript 中将字符串转换为浮点数?

IT技术 javascript parsing floating-point
2021-02-03 00:35:01

我正在尝试从数据网格中解析两个值。这些字段是数字,当它们有逗号时(例如 554,20),我无法获取逗号后的数字。我试过parseIntparseFloat我怎样才能做到这一点?

6个回答

如果它们是单独的值,请尝试以下操作:

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

如果它们是单个值(例如在法语中,一半写为 0,5)

var value = parseFloat("554,20".replace(",", "."));
将逗号用作千位分隔符的地方呢?例如 1234 写成 1,234
2021-03-22 00:35:01
您可以删除逗号,然后解析它。(例如,用“”替换它)
2021-03-22 00:35:01
这不是很安全,因为 sconto = parseFloat("5,,5".replace(",", ".")); 返回 5 领先一个相信它是一个有效的数字,但你失去了 .5 部分或者你可以认为它不是一个有效的数字
2021-03-26 00:35:01
@ max4ever如果你担心默默接受无效号码,您可以使用+(string),而不是parseString(string)由@Stev下面的建议。所以,第一个例子是v1 = +(values[0]); v2 = +(values[1]);.
2021-03-26 00:35:01
失败,如果我的号码是6.000.000. 函数替换只替换第一个逗号分隔符
2021-04-03 00:35:01

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

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

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

便利!

因此,为了解决您的问题,您可以执行以下操作:

var floatValue = +(str.replace(/,/,'.'));
我真的很喜欢这个+(str)解决方案 -parseFloat忽略数字后面的无效字符,在这些情况下+(str)返回NaN,这正是我所需要的。
2021-03-21 00:35:01

用点代替逗号。

这只会返回 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(",","."))
关于 ”。” 千位分隔符?像 4.554,20 会返回什么......?
2021-03-30 00:35:01

如果你像这样扩展 String 对象..

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

.. 你可以这样运行

"554,20".float()
> 554.20

也适用于点

"554.20".float()
> 554.20

typeof "554,20".float()
> "number"
尽管通常认为修改基础对象原型是不好的形式。如果另一个框架也尝试这样做但功能不同怎么办?
2021-03-14 00:35:01

@GusDeCool 或其他任何试图替换超过一千个分隔符的人,一种方法是使用正则表达式全局替换:/foo/g请记住,这.是一个元字符,因此您必须对其进行转义或将其放在方括号 (\.[.]) 中。这是一种选择:

var str = '6.000.000';
str.replace(/[.]/g,",");
是的,没有正则表达式的替换只会替换该字符的一次出现。
2021-03-25 00:35:01