我有以下代码来计算并显示两个值的总和。
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
我做错了什么?我假设它已经解析了数字,但不确定我应该更改什么以使其正常工作。谢谢!
答案 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()
返回一个字符串,所以+
运算符充当字符串连接符。如果您希望它作为加法运算符运行,则必须将值转换为数字:
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;