Javascript で toFixed が値を正確に丸めないのはなぜですか?

Patricia Arquette
リリース: 2024-10-22 14:47:02
オリジナル
399 人が閲覧しました

Why is toFixed Not Rounding Values Accurately in Javascript?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!