Javascriptparsingfloat忽略逗号后的小数
这是一个简单的场景。 我想显示在我的网站上显示的两个值的减法:
//Value on my websites HTML is: "75,00" var fullcost = parseFloat($("#fullcost").text()); //Value on my websites HTML is: "0,03" var auctioncost = parseFloat($("#auctioncost").text()); alert(fullcost); //Outputs: 75 alert(auctioncost); //Ouputs: 0
谁能告诉我我做错了什么?
这是“按devise”。 parseFloat
函数将只考虑string的部分,直到达到非+, – ,数字,指数或小数点。 一旦它看到逗号停止看,只考虑“75”部分。
要解决这个问题,请将逗号转换为小数点。
var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
JavaScript的parseFloat不需要一个区域设置参数。 所以你将不得不用replace.
parseFloat('0,04'.replace(/,/, '.')); // 0.04
parseFloat
根据十进制文字的JavaScript 定义parsing,而不是您的语言环境的定义。 (例如, parseFloat
不是语言环境感知的。)JavaScript中的十进制文字使用.
为小数点。
为什么不使用全球化? 这只是您不使用英语时可以运行的一个问题:
Globalize.parseFloat('0,04'); // 0.04
一些链接在stackoverflow看:
- Jquery全球化
- JQuery全球化是行不通的
正如@JaredPar在他的回答中指出的,用parseFloat
replace
var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
只要用一个dot
replacecomma
就可以修复, 除非这个数字超过千分之一,如1.000.000,00
这样会给你错误的数字。 所以你需要用comma
代替dots
删除。
// Remove all dot's. Replace the comma. var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));
通过使用两次replace,您将能够处理数据,而不会在输出中收到错误的数字。
JS中的数字使用a .
(句号/句点)字符,表示小数点不是a ,
(逗号)。