「123」が3桁であることは見ればすぐ分かるのですが、計算で求めるにはどうしたらよいでしょうか。
3桁の数は100以上1000未満ですので
102≦3桁の数<103
となります。
つまり、数yの桁数xは
10x-1≦y<10x
を満たす数となります。
簡単に言えば
y=10x
となるxを求めればよいことになります。
これは10を底とする対数を使えば求められます。
x=log10y
Excelの場合
この先はExcelを使います。
Excelには10を底とする対数を求める「LOG10」というワークシート関数があります。
LOG10(123) = 2.0899
となります。
これを切り上げた数が桁数を表します。
ROUNDUP(LOG10(123),0) = 3
しかしこの方法には問題があります。
ROUNDUP(LOG10(100),0) = 2
となって、100なのに2桁となってしまいます。
そこで次のように切り捨てて1を加えます。
ROUNDDOWN(LOG10(100),0)+1 = 2
まとめると次の通り。
桁数=ROUNDDOWN(LOG10(数),0)+1
JavaScriptの場合
JavaScriptには底を10とする対数を求めるための関数はありませんが、自然対数(底をネイピア数とする対数)を求める関数「Math.log()」があります。
底を10とするyの対数=yの自然対数÷10の自然対数
このような変換ができますので、これを利用します。
桁数=Math.floor(Math.log(数)/Math.log(10))+1
コメント