[jQuery]四捨五入したいときの注意点

Math.round()使用時の注意。

普通に計算した場合

$(function(){
    var num01 = 100;
    var num02 = 3;
    var output = num01 / num02;
    alert(output); //33.333333333333336
})

割り切れない計算があった場合、こんな感じになる。

四捨五入的に考えて間違ってるのは今回置いておいて、今回の肝は桁数。

単純に桁が多いと見づらいし、割り切れたとしても長くなるとしんどいから一定の桁で止めておきたいってことはよくある。そういうときに、一定の桁数で四捨五入したいよねってなる。

Math.round()を使う

$(function(){
    var num01 = 100;
    var num02 = 3;
    var output = Math.round(num01 / num02);
    alert(output); //33
})

Math.round()を使うと四捨五入される。

例の通りで、小数点以下に適用されて整数が出力される。

これでいい場合とよくない場合がある。

任意の桁で四捨五入したい場合はどうすんのっていう、今回はその応用の話。

小数○位の指定

$(function(){
    var num01 = 100;
    var num02 = 3;
    var output = Math.round(num01 / num02 * 1000) / 1000;
    alert(output); //33.333
})

Math.round()では小数の指定ができないから、欲しい桁まで一旦整数にして、四捨五入して、戻す。

整数○位の指定

$(function(){
    var num01 = 10000;
    var num02 = 3;
    var output = Math.round(num01 / num02 / 1000) * 1000;
    alert(output); //3000
})

整数側で四捨五入したい場合は小数の指定と逆のことをする。

C#との違い

C#にも同じのがあって、でも仕様が違う。

Math.Round(1.1111111,2) //小数2位を四捨五入

こっちは第2引数で桁を指定する。jsには無い仕様なので、混同に注意。

四捨五入以外の処理

Math.ceil() //切り上げ
Math.floor() //切り捨て

使い方はMath.round()と同じ。

コメント

タイトルとURLをコピーしました