2016-07-27 7 views
0

にこの番号を下に取得する必要がありますが、それはまだ10.34345543454346356は、私がparseFloatはを使用している小数点以下

私は2つの小数点以下の桁で全体の金額にこれを有効にするために欠けているものを任意のアイデアのように番号を返します?

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

} 
+0

それを丸めるは、通貨の値を格納するために浮動小数点数を使用しないでください。壊れた値を取得します。すべてをペニーとして整数として格納する。 –

+0

は多分このようなものですhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed? – Brodie

+0

@MarcB好奇心から、値が壊れてしまうのはなぜですか? – Adjit

答えて

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

あなたが対処する必要がある場合ペニーの分数、あなたはを使用することができます

// 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

+0

部門は浮動小数点を返しませんか?代わりに文字列に変換し、小数点記号を追加するべきではありませんか? – Shumush

+0

除算は整数を返すだけでなく、 '0/3 // => 0.3333333333333333'と思っていた場合に整数を返します。また、小数点を手動で追加するべきではありません。丸めには 'Number.prototype.toFixed'を使います。 – naomik

+1

私は、それははるかに明確であることがわかります。ありがとうございました。 – Shumush

関連する問題