243 javascript floating-point parsing
我试图从数据网格中解析两个值.
字段是数字的,当它们有逗号(例如554,20)时,我无法得到逗号后面的数字.
我试过parseInt
和parseFloat
.我怎样才能做到这一点?
Jes*_*sak 350
如果它们是单独的值,请尝试以下方法:
var values = "554,20".split(",")
var v1 = parseFloat(values[0])
var v2 = parseFloat(values[1])
Run Code Online (Sandbox Code Playgroud)
如果它们是一个单一的价值(就像在法语中,其中一半写为0,5)
var value = parseFloat("554,20".replace(",", "."));
Run Code Online (Sandbox Code Playgroud)
小智 51
你有没有试过这样做?:p
var str = '3.8';ie
alert( +(str) + 0.2 );
Run Code Online (Sandbox Code Playgroud)
+(字符串)将字符串转换为float.
便利!
所以为了解决你的问题,你可以这样做:
var floatValue = +(str.replace(/,/,'.'));
Run Code Online (Sandbox Code Playgroud)
Wad*_* M. 33
用点替换逗号.
这只会返回554:
var value = parseFloat("554,20")
Run Code Online (Sandbox Code Playgroud)
这将返回554.20:
var value = parseFloat("554.20")
Run Code Online (Sandbox Code Playgroud)
所以最后,你可以简单地使用:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
Run Code Online (Sandbox Code Playgroud)
不要忘记它parseInt()
应该只用于解析整数(没有浮点).在你的情况下,它只返回554.此外,在浮点数上调用parseInt()不会对数字进行舍入:它将采用它的最低点(最接近的较低整数).
从评论中回答Pedro Ferreira的问题的扩展示例:
如果文本字段包含数千个分隔符点,1.234.567,99
那么可以事先用另一个删除它们replace
:
var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))
Run Code Online (Sandbox Code Playgroud)
sob*_*3ch 16
如果像这样扩展String对象..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
Run Code Online (Sandbox Code Playgroud)
..你可以像这样运行它
"554,20".float()
> 554.20
Run Code Online (Sandbox Code Playgroud)
也适用于dot
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
Run Code Online (Sandbox Code Playgroud)