Javascript 解析浮点数忽略逗号后的小数

IT技术 javascript parsefloat
2021-02-07 06:54:21

这是一个简单的场景。我想显示我网站上显示的两个值的减法:

//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

谁能告诉我我做错了什么?

6个回答

这是“按设计”。parseFloat函数将只考虑字符串的部分,直到 in 到达非 +、-、数字、指数或小数点。一旦它看到逗号,它就会停止查找,只考虑“75”部分。

要解决此问题,请将逗号转换为小数点。

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
这是否适用于所有地区?不使用逗号取决于您在操作系统中的区域设置吗?
2021-03-27 06:54:21
此答案仅适用于当前场景,例如,如果数字为 15,000,则将显示 15,这是不正确的!
2021-03-28 06:54:21
我想大多数人都忘记了逗号也可以用作千位分隔符,而不仅仅是小数点分隔符。
2021-04-03 06:54:21
上面的代码只会删除第一个“,”。如果数字是 700,000,000 呢?你需要: .replace(/,/g, '')
2021-04-08 06:54:21
你好,如果输入是5.200,75这意味着五千二百七十五。
2021-04-12 06:54:21

javascript 的 parseFloat 不接受语言环境参数。所以你将不得不替换,.

parseFloat('0,04'.replace(/,/, '.')); // 0.04
如果数字是 7,000,000.15 呢?
2021-03-30 06:54:21
在尝试解析它们时,您负责使您的字符串看起来像一个浮点数。如果您的语言环境使用句点作为小数点,那么您可以在尝试将其解析为浮点数之前安全地去除所有逗号(千位分隔符)。如果您的语言环境使用逗号而不是句点作为小数点,您可以安全地删除任何句点(千位分隔符),然后将逗号(小数点)更改为句点。
2021-04-01 06:54:21

为什么不使用全球化?这只是您不使用英语时可能遇到的问题之一:

Globalize.parseFloat('0,04'); // 0.04

stackoverflow 上的一些链接可以查看:

parseFloat根据十进制文字的 JavaScript定义进行解析,而不是您的语言环境定义。(例如,parseFloat不识别区域设置。)JavaScript 中的十进制文字.用于小数点。

正如@JaredPar 在他的回答中指出的那样使用parseFloat替换

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));

只需用commaa替换即可dot修复,除非它是一个超过数千的数字否则1.000.000,00这样会给您错误的数字。所以你需要更换comma删除dots

// Remove all dot's. Replace the comma.
var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));

通过使用两次替换,您将能够处理数据而不会在输出中收到错误的数字。