当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript中将字符串转换为float?

如何解决《如何在JavaScript中将字符串转换为float?》经验,为你挑选了4个好方法。

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



1> Jesse Rusak..:

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

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

如果它们是一个单一的价值(就像在法语中,其中一半写为0,5)

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


它不是很安全,因为sconto = parseFloat("5,,5".replace(",",".")); 返回5前导者认为它是一个有效数字,但你松开.5部分或者你可以认为它不是一个有效的数字
如果你有一个逗号用作一千个分隔符怎么样?例如1234写为1,234
您可以删除逗号,然后解析它.(例如,用""替换它)

2> 小智..:

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

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

+(字符串)将字符串转换为float.

便利!

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

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


我真的很喜欢`+(str)`解决方案 - `parseFloat`在数字后忽略无效字符,在这些情况下`+(str)`返回'NaN`,这正是我需要的.

3> Wadih M...:

用点替换逗号.

这只会返回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> sobi3ch..:

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

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

..你可以像这样运行它

"554,20".float()
> 554.20

也适用于dot

"554.20".float()
> 554.20

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


虽然通常认为修改基础对象原型是不好的形式.如果另一个框架也尝试这样做但功能不同怎么办?
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有