プログラマーノート

プログラマーの学習や雑記のメモです

【JavaScript】整数を四捨五入するのではなく丸める(JS編)

はじめに

こんにちは。エンジニアの仕事をしている、たかふみです。

今回は、JavaScriptで、整数を四捨五入するのではなく丸めるにはどうしたらいいかまとめたいと思います。

JavaScriptで整数を丸めたい

たとえば、6770 という数字を下二桁落として丸めたい場合です。

6700と表示したい場合、どうしたらいいのでしょうか?

PHPには round関数というものがあって、第二引数にマイナスの値を渡すと、その桁数で四捨五入ができました。

では、はたしてJavaScriptでは四捨五入をどうするのでしょうか?

JavaScriptには、Math.round という処理があり、これを使うと四捨五入できるようです。

実行してみましょう。6700になるのでしょうか?

let number = Math.round( 6770 );
console.log(number)
// 6770と出力

四捨五入するんだから、結果は6800になるのかと思ってました。

しかし、6800になるどころか、数字は変わっていません。

どうやら、JavaScriptの四捨五入は整数に対応しておらず、小数点のみ有効そうです。

試しに、6.77で試してみます。

let number = Math.round( 6.770 );
console.log(number)
// 7と出力

小数点は、無事に四捨五入できました。

JavaScriptの、Math.roundは小数点のみ有効で、どうやら整数を使用した関数は自作しないといけないようです。

どうすれば整数を丸めることができるのか?

以前の記事で紹介しましたが、整数を特定ケタ数で丸めるには

以下の公式を使います。

数字 ÷ 丸めたい桁数 = Num

Num の小数点を切り捨てる

Numを丸めたい桁数掛ける。

JavaScriptで式を作る

JavaScriptで上の処理を書くと以下のようになります

// 対象の数字
let number = 6770
// 丸めたい桁数
let digit = 100
// 対象の数字を丸めたい桁数で割る 結果は67.7
number = number / digit
// 小数点以下を切り捨てる 結果は67
number = Math.floor(number)
// 桁数で掛ける(すると、桁数分が復活) 
number = number * digit
// 結果的に6700となる
console.log(number)

上記の式では、無事に桁数を丸めることができていることを確認できました。

整数を丸める式を関数化する

上記のコードを関数化し、繰り返し使えるようにします。

const roundDown = (number,digit) => {
    // まるめたい数字より、桁数のほうが大きい場合0になってしまうことに注意
    if ( digit < number ) {
        return Math.floor(number / digit) * digit;
    }
    return number;
}
console.log(roundDown(6770,100))
// 6700と出力される

注意点

ご注意ください

丸めたい数字が、桁数よりも小さい場合は丸められません。

丸めたい数字が桁数よりも小さい場合は、丸めずに返すようになっております。

PHP版で整数を丸める処理の紹介はこちら

PHPで整数を丸める処理の記事は以下になります。

PHPerの方はこちらの記事もどうぞご覧ください。

まとめ

いかがでしたでしょうか

JavaScriptで整数を丸めるお話でした。

皆様の開発のお役に立てたら光栄です。読んで頂いてありがとうございました。