var sssee = "581.30";
var ssser = "1,178.70";
var ssee = sssee.trim().replace(/,/g, "");
var sser = ssser.trim().replace(/,/g, "");
console.log("ee " + ssee)
console.log("er " + sser)
console.log("total " + parseFloat(ssee + sser))
在日志中我看到:
ee 581.30
er 1178.70
总计581.301178
为什么在添加替换时删除,
会使计算混乱。
答案 0 :(得分:7)
变量ssee
和sser
都是字符串。当您执行ssee + sser
时,它将返回字符串581.301178.70
,然后将其传递给parseFloat
函数。当有两个小数点时,只有第一个被认为是正确的,这就是parseFloat
返回581.301178
的原因。
使用正确的解决方案检查代码段。
var sssee = 581.30;
var ssser = "1178.70";
var ssee = String(sssee).trim().replace(/,/g, "");
var sser = String(ssser).trim().replace(/,/g, "");
console.log("ee " + ssee)
console.log("er " + sser)
console.log("total " + (parseFloat(ssee) + parseFloat(sser)))
在使用ssee
和ssser
方法之前,您还应该在String
对象中包裹trim
和replace
。如果不将这些变量作为浮点数而不是字符串提供,那么您的代码将无效。
答案 1 :(得分:1)
你的问题:
将两个字符串(“581.30”+“1,178.70”)连接到一个字符串(“581.301178.70”)。然后你将它解析为浮点数(581.301178)。
解决方案:
首先需要将每个解析为浮点数。完成添加后(parseFloat(ssee) + parseFloat(sser)
)。