Pythonで数値の桁数を取得!任意の位の値をスマートに抽出する方法
Pythonで数値を扱う際、その桁数を知りたい、あるいは特定の位の値を取り出したい、といったケースはよくあります。例えば、ユーザー入力された数字の桁数を検証したり、特定の位の数字に基づいて条件分岐を行ったりする場合などです。この記事では、Pythonでこれらの操作を効率的に行うためのテクニックを、具体的なコード例を交えて解説します。
🔢 数値の桁数を取得する
数値の桁数を取得する最も簡単な方法は、その数値を文字列に変換し、文字列の長さを取得することです。Pythonの組み込み関数であるstr()とlen()を使います。
str()とlen()で桁数を取得
int型でもfloat型でも、一度文字列にしてしまえば、その文字列の文字数が数値の桁数(または文字列表現の長さ)として得られます。
# 整数の桁数を取得
num_int = 12345
print(len(str(num_int))) # 5
# 小数の桁数を取得(小数点や符号も文字としてカウント)
num_float = 3.14159
print(len(str(num_float))) # 7
num_negative = -123
print(len(str(num_negative))) # 4 (符号も含む)
この方法はシンプルで理解しやすいため、多くの場面で役立ちます。
📍 任意の桁(位)の値を取得する
特定の位(一の位、十の位、百の位など)の数値を取得するには、主に二つのアプローチがあります。一つは文字列として扱う方法、もう一つは数学的な演算を使う方法です。
文字列として特定の位の値を取得する
数値を文字列に変換して、文字列のインデックス指定で特定の文字(数字)を取り出す方法です。
num = 98765
# 一の位の取得
# 文字列の最後の文字(インデックス-1)
print(int(str(num)[-1])) # 5
# 十の位の取得
# 文字列の最後から2番目の文字(インデックス-2)
print(int(str(num)[-2])) # 6
# 百の位の取得
# 文字列の最後から3番目の文字(インデックス-3)
print(int(str(num)[-3])) # 7
この方法は直感的で分かりやすいですが、負の数や小数を扱う場合は、事前にabs()で絶対値を取るなどの調整が必要になることがあります。
数学的な演算で特定の位の値を取得する
数学的なアプローチでは、割り算と**剰余(あまり)**の演算子(//と%)を組み合わせて使います。
num = 98765
# 一の位の取得: 10で割った余り
print(num % 10) # 5
# 十の位の取得: まず10で割って一の位をなくし、その後10で割った余り
print((num // 10) % 10) # 6
# 百の位の取得: まず100で割って百の位以下をなくし、その後10で割った余り
print((num // 100) % 10) # 7
この方法は、特に数値計算を重視する場面で役立ちます。負の数を扱う場合でも、Pythonの%演算子は数学的な剰余を返すため、例えば(-15 % 10)は5となります。
💡 小数点の位の値を扱うには
小数点以下の位の値を扱う場合は、一度整数に変換してから上記の文字列や数学的アプローチを適用します。例えば、特定の小数点以下の桁まで掛け算して整数にしてから、また割り戻す、といった方法が考えられます。
num_float = 3.14159
# 小数点以下第一位 (10倍して一の位として扱う)
print(int(num_float * 10) % 10) # 1
# 小数点以下第二位 (100倍して一の位として扱う)
print(int(num_float * 100) % 10) # 4
浮動小数点数の特性上、計算誤差が生じる可能性があるため、厳密な精度が求められる場合はdecimalモジュールなどの利用も検討してください。
まとめ
Pythonで数値の桁数を取得するにはlen(str(num))が最も手軽です。また、任意の桁(位)の値を取得するには、文字列変換を使う方法と、割り算と剰余演算を組み合わせる方法の二つがあります。それぞれの方法にはメリットとデメリットがあるため、処理したい数値の型や、求められる厳密さ、パフォーマンスに応じて使い分けましょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座



