JavaScriptで小数点の丸め方 - toFixed, Math.round, 文字列処理などを使いこなそう
JavaScriptで小数点第1位まで丸める方法
toFixed()
メソッドは、数値を指定した桁数まで文字列として返します。小数点以下の桁数は引数で指定でき、小数点第1位まで丸めるには1
を指定します。
const num = 123.456789;
const result = num.toFixed(1);
console.log(result); // 123.5
Math.round()
メソッドは、数値を四捨五入して整数に丸めます。これを利用して、小数点第1位まで丸めることもできます。
まず、数値を10倍して小数点以下の桁数を1桁後ろにずらし、Math.round()
で四捨五入します。その後、10で割って元の桁数に戻します。
const num = 123.456789;
const result = Math.round(num * 10) / 10;
console.log(result); // 123.5
文字列処理と数値変換を使う
数値を文字列に変換し、小数点以下の桁数を1桁残して新しい文字列を作成します。その後、新しい文字列を数値に変換して返します。
const num = 123.456789;
const str = num.toString();
const result = parseFloat(str.slice(0, str.indexOf('.') + 2));
console.log(result); // 123.5
補足
- 上記の方法は、いずれも小数点第1位まで四捨五入します。
- 切り上げや切り捨てを行う場合は、
Math.ceil()
やMath.floor()
を使うことができます。 - 10以外の桁数で丸めたい場合は、上記のコードを応用して、乗除する値や文字列を切り取る位置を変更する必要があります。
上記以外にも、ライブラリなどを利用して小数点の丸めを行う方法もあります。
JavaScriptで小数点第1位まで丸めるには、主に3つの方法があります。
toFixed()
メソッドを使うMath.round()
と乗除を使う
どの方法を使うかは、状況に応じて使い分けるようにしましょう。
function roundTo1(num) {
return num.toFixed(1);
}
const result1 = roundTo1(123.456789);
console.log(result1); // 123.5
function roundTo1(num) {
return Math.round(num * 10) / 10;
}
const result2 = roundTo1(123.456789);
console.log(result2); // 123.5
function roundTo1(num) {
const str = num.toString();
return parseFloat(str.slice(0, str.indexOf('.') + 2));
}
const result3 = roundTo1(123.456789);
console.log(result3); // 123.5
説明
- 上記のコードはそれぞれ、
roundTo1()
という関数を定義しています。 - この関数は、引数として渡された数値を小数点第1位まで丸めて返します。
- 各関数は、異なる方法で小数点の丸めを行っています。
- コードの最後には、各関数の動作を確認するための処理が記述されています。
- 上記のコードはあくまで一例です。状況に応じて、必要に応じてコードを修正してください。
- より複雑な丸め処理が必要な場合は、
Decimal.js
などのライブラリを利用することを検討してください。
JavaScriptで小数点第1位まで丸めるその他の方法
正規表現を使用して、小数点以下の桁数を1桁に置き換える方法です。
function roundTo1(num) {
const regex = /^(?:\d+|\d{1,}\.\d)(?:\d*)$/;
const result = num.toString().replace(regex, '$1');
return parseFloat(result);
}
const result1 = roundTo1(123.456789);
console.log(result1); // 123.5
固定小数点数のライブラリを使う
fixed
やbignumber.js
などの固定小数点数のライブラリを使用して、小数点以下の桁数を1桁に設定する方法です。
// fixedライブラリを使用する場合
const Fixed = require('fixed');
function roundTo1(num) {
const result = new Fixed(num).toFixed(1);
return result.valueOf();
}
const result2 = roundTo1(123.456789);
console.log(result2); // 123.5
// bignumber.jsライブラリを使用する場合
const BigNumber = require('bignumber.js');
function roundTo1(num) {
const result = new BigNumber(num).toFixed(1);
return result.toNumber();
}
const result3 = roundTo1(123.456789);
console.log(result3); // 123.5
- 正規表現を使う方法は、シンプルなコードで記述できますが、ライブラリを使用するよりも処理速度が遅くなる可能性があります。
- 固定小数点数のライブラリを使用する方法は、より精度が要求される場合や、複雑な小数点の処理が必要な場合に適しています。
- 処理速度や精度などの要件を考慮して、適切な方法を選択してください。
javascript rounding