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在他的回答中指出的,用parseFloatreplace
var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
只要用一个dotreplacecomma就可以修复, 除非这个数字超过千分之一,如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 , (逗号)。