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 , (逗号)。