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

JavaScriptで数値の桁数を数える方法を解説

JavaScriptで数値の桁数を求める方法

この課題の要件はとてもシンプルです。数値を受け取り、その桁数を返すJavaScript関数を作成する必要があります。

例を見てみましょう。

4567 の桁数は 4
423467 の桁数は 6
457 の桁数は 3

それでは、この関数のコードを実際に書いていきましょう。

実装例:再帰を使った解法

const num = 2353454;
const digits = (num, count = 0) => {
    if(num){
        return digits(Math.floor(num / 10), ++count);
    };
    return count;
};
console.log(digits(num));
console.log(digits(123456));
console.log(digits(53453));
console.log(digits(5334534534));

コードの仕組み

この関数は再帰処理を利用しています。ポイントは以下の通りです。

・第2引数の count のデフォルト値は 0 に設定されています。
・数値が 0 以外である限り、10 で割って小数点以下を Math.floor() で切り捨てながら、自分自身を再度呼び出します。
・関数が呼び出されるたびに ++count によってカウントが 1 ずつ増えていきます。
・数値が 0 になると if(num) の条件が偽となり、ループが終了して累積された count、すなわち桁数が返されます。

出力結果

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

7
6
5
10

別のアプローチ:文字列変換を使う方法

再帰を使わずにもっと簡潔に書きたい場合は、数値を文字列に変換して長さを取得する方法も有効です。

const digits = (num) => String(Math.abs(num)).length;

console.log(digits(2353454)); // 7
console.log(digits(-123456)); // 6

Math.abs() で絶対値にすることで、負の数を渡した場合でもマイナス記号が文字数に含まれず、正確な桁数を取得できます。大きな数値を扱う場合もこの方法なら直感的で読みやすいコードになります。

  1. JavaScriptで数値の各桁の数字を一つずつ分割表示する方法

    はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html>   <head>   &n

  2. C++で数値Nを割り切る桁の個数を数える方法

    整数 N が与えられ、その数値を構成する各桁のうち、元の数値 N を割り切るものの個数を求めることを考えます。 注意すべきポイント 桁が「0」である場合は無視します。つまり、0 に対してはカウントを増やしません。 同じ数字が複数回現れ、かつそれが数値を割り切る場合には、出現した回数だけカウントします。たとえば 2240 という数値の場合、0 以外のすべての桁が 2240 を割り切ることができ、2 は2回出現しているので、2 に関するカウントは 2 になります。 入力 − number = 2240 出力 − カウントは 3 説明 − 数値を桁に分解すると 2、2、4、0 となります。