JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで小数点以下の桁数を取得する方法

JavaScriptでは、整数または浮動小数点数を受け取り、小数点以下の桁数を返す関数を実装する必要がある場面があります。引数が浮動小数点数の場合は小数点以下の桁数を返し、整数の場合は0を返します。

例として、次の2つの数値を考えてみましょう。

const num1 = 1.123456789;
const num2 = 123456789;

num1には小数点以下が9桁あるため「9」を返す必要があります。一方、num2は整数なので「0」を返します。

実装コード

以下がその実装例です。

const num1 = 1.123456789;
const num2 = 123456789;
const decimalCount = num => {
    // 数値を文字列に変換
    const numStr = String(num);
    // 文字列に小数点が含まれているか確認
    if (numStr.includes('.')) {
        return numStr.split('.')[1].length;
    };
    // 小数点が含まれていない場合は0を返す
    return 0;
}
console.log(decimalCount(num1)) // 9
console.log(decimalCount(num2)) // 0

処理の流れ

  1. 文字列への変換:String()メソッドを使って、数値を文字列に変換します。
  2. 小数点の有無を判定:includes('.')で文字列に小数点(.)が含まれているかどうかを確認します。
  3. 桁数の取得:小数点が含まれる場合、split('.')で小数点より後ろの部分を取り出し、そのlength(長さ)を返します。
  4. 整数の場合:小数点が含まれない場合は、そのまま0を返します。

出力

コンソールには次のように出力されます。

9
0

注意点

この方法はシンプルで分かりやすい反面、JavaScriptの浮動小数点演算の特性上、計算結果の数値を扱う場合は浮動小数点誤差により期待と異なる桁数が返されることがあります。厳密な精度が求められる場合は、toFixed()メソッドやDecimal.jsなどの外部ライブラリの利用も検討するとよいでしょう。

  1. JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方

    JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時

  2. JavaScriptで小数を検証するには?正規表現を使った実装例を解説

    JavaScriptで小数を検証する方法 JavaScriptで、ユーザーが入力した値が正しい小数(小数点を含む数値)かどうかを判定したい場面はよくあります。そんなときに便利なのが正規表現です。本記事では、match()メソッドと正規表現を組み合わせて、入力値が小数かどうかを検証する方法を、具体的なコード例とともにわかりやすく解説します。 使用する正規表現パターン 今回の検証では、以下の正規表現を使用します。 /^[-+]?[0-9]+\.[0-9]+$/ このパターンの各要素の意味は次のとおりです。 ^[-+]?:文字列の先頭に符号(+ または -)が付いていても、付いていなくてもマッチ