対数を使って桁数を調べる

Pocket

「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

[ 2011年7月21日 | カテゴリー: Excel, JavaScript | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報