toFixed的总和无法正常工作

时间:2018-03-28 19:09:24

标签: javascript parsefloat tofixed

我有以下代码来计算并显示两个值的总和。

var oldprice_formated = parseFloat(oldprice).toFixed(2);
var extraPrice = parseFloat(3).toFixed(2);
  if(initials != '') {
    var new_price = oldprice_formated + extraPrice;
    $('.product-detail .woocommerce-Price-amount.amount').html('<span>€</span>'+new_price);
  } else {
    $('.product-detail .woocommerce-Price amount.amount').html('<span>€</span>'+oldprice_formated);
  }

例如:

oldprice_formated = parseFloat(49.99).toFixed(2);
extraPrice = parseFloat(3.00).toFixed(2)

预期结果: Sum为52.99

实际结果:总和为49.003.00

我做错了什么?我假设它已经解析了数字,但不确定我应该更改什么以使其正常工作。谢谢!

2 个答案:

答案 0 :(得分:2)

.toFixed()返回一个字符串,而不是只有两位小数的数字。

oldprice_formated = parseFloat(49.99).toFixed(2); // "49.99"
extraPrice = parseFloat(3.00).toFixed(2); // "3.00"

在添加这两个变量而不是数字总和时,您需要连接两个字符串:

"49.99" + "3.00"; // "49.993.00"

我相信这是你想做的事情:

var new_price = parseFloat(oldprice_formated) + parseFloat(extraPrice);

或者在对已经解析为浮点数的值求和之后运行.toFixed()

答案 1 :(得分:0)

因为toFixed()返回一个字符串,所以+运算符充当字符串连接符。如果您希望它作为加法运算符运行,则必须将值转换为数字:

&#13;
&#13;
let oldprice = 49.99;
let oldprice_formatted = parseFloat(oldprice).toFixed(2);
let extraPrice = parseFloat(3).toFixed(2);

console.log(`string concatenation: ${oldprice_formatted + extraPrice}`)
console.log(`type conversion: ${+oldprice_formatted + +extraPrice}`)
&#13;
&#13;
&#13;