【问题标题】:Sum of toFixed not working correctlytoFixed 的总和无法正常工作
【发布时间】:2018-03-28 19:09:23
【问题描述】:

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

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)

预期结果:总和为 52.99

实际结果:总和为 49.003.00

我做错了什么?我认为它与数字解析有关,但不确定我应该更改什么以使其正常工作。谢谢!

【问题讨论】:

    标签: javascript parsefloat tofixed


    【解决方案1】:

    .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()

    【讨论】:

    • 另外,您不需要在号码上运行parseFloat
    • 您好,感谢您的帮助!这似乎是一个合乎逻辑的解释。但是当我只使用 parseFloat() 时,49.99 变成了 49,总和是 52 而不是 52.99。如何将数字格式化为 2 位小数?
    • 这不应该发生。 parseFloat(49.99) 将返回 49.99。您确定您传递给parseFloat 的号码格式正确吗?你能举一些例子吗?
    • 你是对的,它是通过 49,99 到 parseFloat 而不是 49.99。非常感谢您的帮助!
    • 是的,javascript 不理解 , 作为小数分隔符。如果你的号码有这个,你可以使用replace
    【解决方案2】:

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

    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}`)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2017-02-17
      • 2021-08-02
      • 2013-08-01
      • 2011-10-10
      • 2017-05-16
      • 2016-11-26
      相关资源
      最近更新 更多