0

次のコードスニペットを使用して合計金額を計算しています。これは、#totalPriceがたとえば$267.9999999999に拡張される場合を除いてうまく機能します。この関数内で#totalPriceを再フォーマットして、価格を処理する際の標準として小数点以下2桁に丸めるにはどうすればよいですか。

function getTotalCost(inventory) {
    if(inventory) {
        getTotalParts(inventory);
        getTotalMarkup(inventory);
    }

    var labor = $('#labor').val() * 1;
    var totals = 0;
    for(i in totalMarkup) {
        totals += totalMarkup[i];
    }
    totalCost = totals+labor;
    /*if(totals == 0) {
        totalCost = 0;
    }*/
    $('#totalPrice').html(totalCost);
}
4

3 に答える 3

1

javascriptを使用する場合、フローティングポイントは常に悪いものです。あなたができる最善のことは、それを切り上げることです。

しかし、この場合、あなたはすることができます

(totalCost).toFixed(2);
于 2012-07-03T19:11:25.747 に答える
1

あなたが持つことができます:

$('#totalPrice').html(totalCost.toFixed(2));

見る:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed

toFixedメソッドはフォーマットされた数値を返すため、数値を文字列に変換することに注意してください。文字列が必要なため、ここでは問題ありませんhtmlが、数値の合計が必要な場合に文字列の連結を回避するために、この点に注意してください。私はあなたが$('#labor').val() * 1;まさにこの理由で使用すると信じています。ただし、必須ではありません。parseFloat単項プラス演算子などのメソッドを使用することをお勧めします。

var labor = +$('#labor').val();
于 2012-07-03T19:20:26.250 に答える
0

このようにJavaScriptでMath.round関数を使用できます。

totalCost = Math.round(totalCost*100)/100;
$('#totalPrice').html(totalCost);
于 2012-07-03T19:11:42.820 に答える