#はじめに
数字の桁数を取得する方法です。
型のキャストが少し面倒くさいですが簡単です。
[追記]コメントで、よりスマートな方法を教えていただきましたので記載しました!
#整数の場合
数字を文字列に変換して、長さを取得する。
負の数の場合、マイナス符号が桁数に入ってしまうので絶対値に変換しておく。
num = -12345
num = abs(num) # 絶対値に変換
num_str = str(num) # 文字列に変換
num_digits = len(num) # 文字列の長さ(桁数)を取得
print(num_digits) # 実行結果 5
もしくは1行で
num = -12345
num_digits = len(str(abs(num))) # 一括変換
print(num_digits) # 実行結果 5
#小数の場合
基本的には整数の場合と一緒ですが、桁数なので小数点を排除します。
num = 0.123456
num = abs(num)
num_str = str(num).replace(".","") # 小数点を無視
num_digits = len(num)
print(num_digits) # 実行結果 7
スマートな方法
数値かどうかを判定するisdigit()を使ってカウントします。
整数でも小数でもこの書き方で可能です。
def count_digit(value):
return sum(c.isdigit() for c in str(value))
print(count_digit(-12345)) # 実行結果 5
print(count_digit(0.12345)) # 実行結果 6
print(count_digit(-3.14)) # 実行結果 3