JavaScript:四捨五入をマスターしよう!toFixed、Math.round、正規表現、ライブラリ徹底比較
JavaScript で数値を小数点以下2桁まで四捨五入する方法
toFixed()
メソッドは、数値を指定した桁数まで文字列に変換します。小数点以下の桁数を指定することで、四捨五入を行うことができます。
const num = 123.456789;
const result = num.toFixed(2);
console.log(result); // 123.46
この例では、num
という変数に 123.456789 という数値を代入し、toFixed(2)
メソッドを使って小数点以下2桁まで文字列に変換しています。結果は 123.46
となり、123.456789 が小数点以下2桁まで四捨五入されています。
Math.round()
メソッドは、数値を四捨五入して整数に変換します。これを利用して、小数点以下2桁まで四捨五入することもできます。
const num = 123.456789;
const result = Math.round(num * 100) / 100;
console.log(result); // 123.46
この例では、num
という変数に 123.456789 という数値を代入し、まず num * 100
で100倍します。その後、Math.round()
で四捨五入し、最後に 100
で割ることで、小数点以下2桁までになります。結果は 123.46
となり、123.456789 が小数点以下2桁まで四捨五入されています。
補足
- 上記の例では、四捨五入していますが、切り上げや切り捨てを行うこともできます。詳細は
Math.ceil()
やMath.floor()
メソッドを参照してください。 - どちらの方法を使うかは、状況によって使い分けることができます。
toFixed()
メソッドは文字列として結果を取得したい場合に、Math.round()
と除算を使う方法は数値として結果を取得したい場合に適しています。
toFixed() メソッドを使う
function roundToTwoDecimals(num) {
return num.toFixed(2);
}
const num1 = 123.456789;
const result1 = roundToTwoDecimals(num1);
console.log(result1); // 123.46
const num2 = -123.456789;
const result2 = roundToTwoDecimals(num2);
console.log(result2); // -123.46
このコードでは、roundToTwoDecimals
という関数を作成し、その中で toFixed(2)
メソッドを使って数値を小数点以下2桁まで四捨五入しています。
Math.round() と除算を使う
function roundToTwoDecimals(num) {
return Math.round(num * 100) / 100;
}
const num1 = 123.456789;
const result1 = roundToTwoDecimals(num1);
console.log(result1); // 123.46
const num2 = -123.456789;
const result2 = roundToTwoDecimals(num2);
console.log(result2); // -123.46
- 上記のコードは、引数として渡された数値を四捨五入します。戻り値は、四捨五入された数値です。
- このコードを実際に使用する場合は、必要に応じて修正してください。
JavaScript で数値を小数点以下2桁まで四捨五入する方法: その他の方法
正規表現を使って、小数点以下2桁の数字部分を抽出し、四捨五入することができます。
function roundToTwoDecimals(num) {
const regex = /^(?:\d+|\d+\.\d{1,2})/;
const result = regex.exec(num.toString())[0];
return parseFloat(result);
}
const num1 = 123.456789;
const result1 = roundToTwoDecimals(num1);
console.log(result1); // 123.46
const num2 = -123.456789;
const result2 = roundToTwoDecimals(num2);
console.log(result2); // -123.46
このコードでは、正規表現 /(?:\d+|\d+\.\d{1,2})/
を使って、小数点以下2桁までの数字部分を抽出し、parseFloat()
関数を使って数値に変換しています。
ライブライリを使う
lodash
や fp-ts
などのライブラリには、数値を四捨五入するユーティリティ関数が含まれている場合があります。
// lodash を使う場合
const _ = require('lodash');
const result1 = _.round(123.456789, 2);
const result2 = _.round(-123.456789, 2);
console.log(result1); // 123.46
console.log(result2); // -123.46
// fp-ts を使う場合
const { round } = require('fp-ts/lib/Number');
const result1 = round(2)(123.456789);
const result2 = round(2)(-123.456789);
console.log(result1); // 123.46
console.log(result2); // -123.46
これらの例では、lodash
と fp-ts
ライブラリの round
関数を使って、数値を小数点以下2桁まで四捨五入しています。
その他の方法
上記以外にも、独自の関数を作成したり、精度誤差を考慮した四捨五入アルゴリズムを使用したりするなど、様々な方法があります。
注意事項
- 上記の方法はあくまでも例であり、状況に応じて適切な方法を選択する必要があります。
- 四捨五入を行うと、精度誤差が発生する可能性があることに注意してください。
javascript math