JavaScript で toFixed が正確に丸められない
JavaScript でチェックボックスの値を管理するコンテキストにおいて、ユーザーは toFixed(2 ) メソッドでは値が適切に丸められません。たとえば、値 859.385 は、予期される 859.39 ではなく 859.38 として表示される場合があります。
ブラウザの不一致と精度
toFixed メソッドの動作が異なる場合があることに注意することが重要です。使用されているブラウザに基づいて。ブラウザの不一致に対処し、ブラウザ間で一貫した丸めを確保するには、toFixed10 メソッドまたは次のカスタム関数を利用することをお勧めします:
<code class="javascript">function toFixed( num, precision ) { return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision); }</code>
カスタム関数実装
提供されたコードにカスタム toFixed 関数を組み込むには、次の変更が必要になります:
<code class="javascript">var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val()); var price = parseFloat($('#hprice_'+this.id.split('_')[1]).val()); var discount = parseFloat($('#hdiscount_'+this.id.split('_')[1]).val()); var deposit = parseFloat($('#hdeposit_'+this.id.split('_')[1]).val()); var currSprice = parseFloat($('#hTotalSprice').val()); var currPrice = parseFloat($('#hTotalPrice').val()); var currDiscount = parseFloat($('#hTotalDiscount').val()); var currDeposit = parseFloat($('#hTotalDeposit').val()); currSprice += standardprice; currPrice += price; currDiscount += discount; currDeposit += deposit; $('#lblTotalSprice').text('$'+addCommas(toFixed(currSprice, 2))); $('#lblTotalPrice').text('$'+addCommas(toFixed(currPrice, 2))); $('#lblTotalDiscount').text('$'+addCommas(toFixed(currDiscount, 2))); $('#lblTotalDeposit').text('$'+addCommas(toFixed(currDeposit, 2))); $('#hTotalSprice').val(toFixed(currSprice, 2)); $('#hTotalPrice').val(toFixed(currPrice, 2)); $('#hTotalDiscount').val(toFixed(currDiscount, 2)); $('#hTotalDeposit').val(toFixed(currDeposit, 2));</code>
このカスタム関数を実装することにより、ブラウザーの種類に関係なく正確な丸めを保証できます。
以上がJavascript で toFixed が値を正確に丸めないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。