【Python】math.log10()を使用して桁数および小数第何位に初めて0でない数字が出現するか調べる

■常用対数

常用対数とは、底を10とする log10x で表記される。

常用対数は、整数の桁数および小数点の位置を調べるのに便利

■例題

▼問題1
2100は何桁の数か求める

▼問題2
(1/2)10は少数第何位に初めて0でない数が現れるか調べる。

■常用対数を使用した解法

log102 = 0.3010 とするとき以下のように解く

▼問題1

a = 2100
log10a = log102100
log10a = 100 × log102 = 100 × 0.3010
log10a = 100 × 0.3010
log10a = 30.10

30 < log10a < 31 より、
1030 < a < 1031

したがって、1030 より大きく1031より小さい(先頭の桁の後ろに0が30個存在している)ため、
桁数は31桁である。

▼問題2

b = (1/2)10
log10b = log102-10
log10b = -10 × log102
log10b = -10 × 0.3010
log10b = -3.010

-4 < log10b < -3 より、
10-4 < b < 10-3

って、10-4 より大きく10-3より小さい(小数点以下の後ろに0が3個存在している)ため、
小数点第4位に初めて0でない数が現れる。

■今回使用するライブラリ

▼今回使用するライブラリ
math.log10()

▼使い方

import math

math.log10(2)    # 0.3010299956639812

■サンプルコード

# -*- Coding:UTF-8 -*-
import math

# ▼問題1
ques1 = 2 ** 100

print('問題1')
print(ques1)
# 小数点以下切り捨て、1を加算
print(int(math.log10(ques1) + 1))


# ▼問題2
ques2 = (1/2) ** 10

print('問題2')
print(ques2)
# 小数点以下切り捨て、1で引く
print(int(math.log10(ques2) - 1))

■実行結果

問題1
1267650600228229401496703205376
31
問題2
0.0009765625
-4
タイトルとURLをコピーしました