需要将此数字减少到两位小数

时间:2016-07-27 21:27:26

标签: jquery

我正在使用parseFloat,但它仍然返回一个像10.34345543454346356这样的数字

知道我错过了什么,将其转换为两位小数的整数金额?

else
{
    // Switch to Monthly
    $(this).val("monthly");
    $('.pts-right').removeClass('pts-switch-active');
    $('.pts-left').addClass('pts-switch-active');

    // Switch Pricing Box to monthly
    var retailAmt = parseFloat(546.86);
    var taxAmt = parseFloat(6.75 / 100); // convert to decimal
    var interestRate = parseFloat(3.76 / 100); // convert to decimal
    var term = parseFloat(60);

    $('.pricing > div:not(.clearfix, #accordion) .pricing-price > span').each(function () {
        // Grabs the three span pricing boxes
        debugger;
        var retail = parseFloat($(this).text().replace('$', ''));
        var monthlyPayment = (parseFloat(retail) + (parseFloat(retail) * parseFloat(taxAmt)) + (parseFloat(retail) * parseFloat(interestRate))) / parseFloat(term);

        $(this).text("$" + monthlyPayment);
    });

}

1 个答案:

答案 0 :(得分:2)

正如Marc B所说:不要使用浮动来存储实际值。将值保持为整数,并使用应用于整数

的格式/计算来显示它们

相关:How to deal with floating point number precision in JavaScript?



// floats are bad
var payment = 540.11 + 0.2
var paymentString = '$' + payment
console.log(paymentString)
// => 540.3100000000001 






// integers are good
var payment = 54011 + 20
var paymentString = '$' + payment / 100
console.log(paymentString)
// => $540.31




如果你必须处理几分钱,你可以使用Number.prototype.toFixed来围绕它



// rounding is OK for fractions of pennies

var payments = 54011 + 56392 + 52250
// 162653

var averagePayment = payments / 3
// 542.17666666666664

var paymentString = '$' + (averagePayment / 100).toFixed(2)
console.log(paymentString)
// => $ 542.18