JavaScript:
数値の丸め処理
方法:
JavaScriptで数値を丸める方法は、Math.round()、Math.ceil()、Math.floor()を使います:
let originalNumber = 2.567;
let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber); // 3
let rounded = Math.round(originalNumber); // 3 (.567が.5より大きいため)
console.log(roundedDown); // 出力:2
console.log(roundedUp); // 出力:3
console.log(rounded); // 出力:3
特定の小数点以下の桁数に修正するには、toFixed()を使います:
let twoDecimals = originalNumber.toFixed(2); // "2.57" (文字列を返す)
console.log(twoDecimals); // 出力:"2.57"
文字列を数値に戻すには、単項プラスまたはNumber()を使います:
let numberAgain = +twoDecimals; // 2.57
console.log(numberAgain); // 出力:2.57
深掘り
数値の丸めは新しいことではありません。それは数字が存在する限り古い技術です。JavaScriptでは、Math.round()は「half up」を丸める方法を使います:分数部が0.5の場合、最も近い偶数に丸められます。
より細かい制御が必要な場合、toFixed()が適しているかもしれませんが、文字列を返すことを覚えておいてください。数値に戻すのは追加のステップかもしれませんが、数値型で作業を続けることを保証します。
代替手段?lodashのようなライブラリは、より繊細な制御のために_.round(number, [precision=0])を提供します。または、新しいIntl.NumberFormatは丸めだけでない高精度のフォーマットを提供します。
精度について言えば、JavaScriptの浮動小数点の奇妙な点に注意してください。0.1 + 0.2は厳密には0.3と等しくないのは、数値がどのように格納されているかによるものです。時には、このような浮動小数点のエラーを修正するために丸めが必要になります。
参照
- MozillaのMathドキュメント:MDN Web Docs
Intl.NumberFormatによる金融丸め:ECMAScript Internationalization APIlodashの丸め:Lodash Docs