web-dev-qa-db-ja.com

値を10進数2桁に丸めるjavascript

最終値に小さな問題があります。小数第2位に丸める必要があります。

_var pri='#price'+$(this).attr('id').substr(len-2);
            $.get("sale/price?output=json", { code: v },
               function(data){
                 $(pri).val(Math.round((data / 1.19),2));
            });
        });
_

どんな助けも大歓迎です。

解決策:$(pri).val(Math.round((data / 1.19 * 100 )) / 100);

17
Dario

数値に100を掛け、丸め、結果の数値を100で除算するだけです。

10
David

文字列として2桁の小数に視覚的にフォーマットする場合(出力用) toFixed() を使用します。

_var priceString = someValue.toFixed(2);
_

@Davidによる答えには2つの問題があります。

  1. 結果を浮動小数点数として残すため、特定の結果を小数点以下の桁数で表示する可能性があります。 _134.1999999999_の代わりに_"134.20"_。

  2. 値が整数であるか、10分の1に丸められる場合、追加の10進数値は表示されません。

    _var n = 1.099;
    (Math.round( n * 100 )/100 ).toString() //-> "1.1"
    n.toFixed(2)                            //-> "1.10"
    
    var n = 3;
    (Math.round( n * 100 )/100 ).toString() //-> "3"
    n.toFixed(2)                            //-> "3.00"
    _

また、上記でわかるように、toFixed()を使用する方がはるかに簡単に入力できます。 ;)

70
Phrogz