【JavaScript】 倍数で切り上げ・切り捨てする
更新日:2022/07/08
ある値をある値の倍数に合わせたいとき、切り上げるケースと切り捨てるケースがあります。
JavaScriptでの方法を考えてみました。
倍数で切り上げる
倍数で切り上げるときは、値を求める倍数で割って結果を切り上げます。
その結果に、求める倍数を掛けます。
例えば、21を4の倍数に切り上げたいとします。
- 21 ÷ 4 = 5.25 → 切り上げ:6
- 6 × 4 = 24
この結果、求める値は24となります。
JavaScriptで値を切り上げるときは、Math.ceil()を使用します。
次のようなコードで、関数化できます。
倍数で切り上げる例
const roundUpMultiple = (value,multiple)=>{
return Math.ceil( value / multiple ) * multiple;
}
分かりやすいようにreturnを入れていますが、次のように単純化できます。
倍数で切り上げる例
const roundUpMultiple = (value,multiple)=>
Math.ceil( value / multiple ) * multiple;
次のように使用します。
console.log( roundUpMultiple( 21,4) );
// 結果: 24
倍数で切り捨てる
倍数で切り捨てるときは、値を求める倍数で割って結果を切り捨てます。
その結果に、求める倍数を掛けます。
JavaScriptで値を切り上げるときは、Math.floor()を使用します。
倍数で切り捨てる例
const roundDownMultiple = (value,multiple)=>
Math.floor( value / multiple ) * multiple;
次のように使用します。
console.log( roundDownMultiple( 21,4) );
// 結果: 20
切り上げ・切り捨てを同一化
切り上げと切り捨てを個々に関数化しましたが、一つにしてみます。
一つの関数にまとめる例
const roundMultiple = (value,multiple,isUp = true)=>
(isUp ? Math.ceil( value / multiple ) :
Math.floor( value / multiple ) ) * multiple
3番目の引数を省略したりtrueを指定すると、切り上げになります。
falseを指定すると、切り捨てです。
console.log( roundMultiple( 21,4) );
// 結果: 24
console.log( roundMultiple( 21,4,false) );
// 結果: 20
倍数への差分を求める
倍数にするために切り上げた数または切り捨てた数を差分として求めてみます。
これまで得た結果から、元となる値を引き算するだけです。
倍数への差分を求める例
const roundMultipleDifference = (value,multiple,isUp = true)=>
roundMultiple(value,multiple,isUp) - value;
次ような結果になります。
console.log( roundMultipleDifference( 21,4) );
// 結果: 3
console.log( roundMultipleDifference( 21,4,false) );
// 結果: -1
更新日:2022/07/08
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。