JavaScriptで数値の小数部分のみを取得する方法
JavaScriptでは、数値から小数点以下の部分だけを取り出したい場面があります。本記事では、数値を文字列として処理し、小数部分を正確に抽出して返す関数の実装方法を解説します。
問題の概要
数値を受け取るJavaScript関数を作成します。この関数は、引数として渡された数値のうち、小数点(.)より後ろの部分だけを取り出し、数値として返す必要があります。
実装例
以下がそのコードです。
const num = 435.43436;
const retrieveDecimalPart = (num = 1) => {
const str = String(num);
let [_, decimal] = str.split('.');
const divisor = Math.pow(10, decimal.length)
decimal = +decimal;
return decimal / divisor;
};
console.log(retrieveDecimalPart(num));
コードの解説
処理の流れは次のとおりです。
- 文字列への変換:
String(num)で数値を文字列に変換します。 - 分割:
split('.')を使って整数部と小数部に分割します。 - 除数の計算:
Math.pow(10, decimal.length)により、小数部の桁数に応じた10の冪乗を求めます。 - 数値化と復元: 小数部を数値に変換したうえで除数で割ることで、
0.xxxxxの形式に戻します。
この手法のポイントは、単純に小数部の数字を返すのではなく、元の数値における「0.43436」という形を保ったまま返せることです。
出力結果
コンソールには次のように出力されます。
0.43436
別のアプローチ:剰余演算子を使う方法
よりシンプルな方法として、剰余演算子(%)を利用する手段もあります。num % 1 は1で割った余り、つまり小数部分をそのまま返します。
const num = 435.43436; const retrieveDecimalPart = (num = 1) => num % 1; console.log(retrieveDecimalPart(num)); // 0.43436
ただし、浮動小数点数の仕様上、0.1 + 0.2 のような計算と同様に微小な誤差が生じる場合があるため、厳密な精度が必要なケースでは最初に紹介した文字列ベースの方法や、toFixed()・toPrecision() を組み合わせた処理が有効です。
まとめ
数値の小数部分を取得するには、文字列に変換して split('.') で分割する方法と、剰余演算子 % を使う方法の2つが代表的です。用途や精度の要件に応じて使い分けることで、意図した結果を確実に得られます。
-
【JavaScript】10進数を切り上げる関数を自作する方法|Math.ceil相当の実装を解説
JavaScriptでは、Mathオブジェクトに標準で用意されているMath.ceil()メソッドを使うことで、小数を簡単に切り上げることができます。本記事では、このceil相当の機能を持つ関数を自分で実装する方法を、コード例とともにわかりやすく解説します。 課題 私たちが作成するのは、JavaScriptのMathクラスに属するような関数です。 この関数は、呼び出された10進数(小数)に対して、それ以上で最も近い整数、つまり「切り上げた値」を返す必要があります。 また、渡された数値がすでに整数である場合は、その値をそのまま返す仕様とします。 解決のアプローチ この問題は、次の手順で解
-
JavaScriptで昇順配列の中から並び順を壊している唯一の要素を見つける方法
この記事では、昇順(増加順)にソートされた数値の配列の中に、ただひとつだけ並び順を乱している要素がある場合に、その要素を特定して返すJavaScript関数の実装方法を解説します。 問題の定義 扱う配列は基本的に昇順でソートされていますが、その中の要素がひとつだけ順序から外れています。関数の目的は、その「異常な要素」を見つけ出して返すことです。 たとえば、次のような配列を考えます。 const arr = [1, 2, 3, 4, 17, 5, 6, 7, 8]; この配列から「17」を取り除けば残りは完全な昇順になるため、求める答えは「17」です。 解決のアプローチ 昇順の配列では、隣り合う