2017-10-27 19 views
1

小数点を18桁に制御できるように、このコードにtoFixedメソッドを追加すると、不正確な計算が行われません。今JavaScriptの小数点出力を制御する

10万51を返す必要がありますが、あなたが値を設定する前51.00000000000004

< script type = "text/javascript" > 
 
    $(document).ready(function() { 
 
    var qty = $("#qty"); 
 
    qty.keyup(function() { 
 
     var total = isNaN(parseInt(qty.val() * $("#price").val())) ? 0 : (qty.val() * $("#price").val()) 
 
     $("#total").val(total); 
 
    }); 
 
    }); 
 
</script>

答えて

1

一つのオプションはここで返している:

$("#total").val(total.toFixed(2)); 

別のオプションですここで数学の後に:

(qty.val() * $("#price").val()).toFixed(2) 
+0

ありがとう、私は18ヵ所が必要なので、私は18に変更しましたが、正確な値はまだ異なっています。今や10万人が51.000000000000007105を返していますが、18の場所を維持する方法がありますが、正確な数字が返されていることを確認してください。 –

+0

@DavidClabaugh浮動小数点は近似値であり、JavaScriptの数値は小数点以下の桁数では十分正確ではないという事実に惑わされています。参照:[浮動小数点演算は壊れていますか?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) –

関連する問題