Pythonで手軽に桁数指定!初心者でも5分で理解できる10の方法

Pythonで数値の桁数を指定する方法のイラストPython
この記事は約17分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●Pythonで桁数を指定する方法とは

プログラミングをしていると、数値データを扱う場面が多々あります。

例えば、金額計算や日時の表示、統計データの処理など、様々なシーンで数値が登場しますよね。

そんな時、桁数を揃えて表示したり、小数点以下の桁数を指定したりする必要があります。

そこで活躍するのが、Pythonでの桁数指定の手法です。

Pythonには、書式指定や数値関数、文字列操作など、様々な方法で桁数を調整できる機能が用意されています。

これを使いこなせば、データの見栄えを整えたり、計算結果を好みの形式で出力したりするのも簡単です。

○桁数指定が必要な場面

では、具体的にどんな場面で桁数指定が必要になるのでしょうか。例を挙げてみましょう。

金額計算では、小数点以下2桁までの表示が一般的です。

「1,234.56円」のように、3桁ごとにカンマを入れて見やすく整形することも多いですね。

日時データでは、「2023-04-01 09:30:00」のように、年月日や時分秒を2桁ずつ揃えて表記するのが一般的です。

ゼロ埋めを使って桁数を合わせることで、データの統一感が出ます。

統計データでは、平均値や分散などの計算結果を小数点以下何桁まで表示するか指定する必要があります。

有効桁数を揃えることで、データの比較がしやすくなります。

こうした場面では、桁数指定のテクニックが大活躍します。

Pythonの機能を使えば、手軽にデータの表示形式を整えられるのです。

○Pythonでの数値の扱い方

桁数指定の方法を見ていく前に、Pythonにおける数値の扱い方を押さえておきましょう。

Pythonでは、整数と浮動小数点数という2種類の数値型があります。

□整数と浮動小数点数

整数は、正負の符号付きの整数値です。

例えば、-3, 0, 10などが整数型の値になります。

一方、浮動小数点数は、小数点を含む数値を表現します。

例えば、3.14, -2.5, 1.0などが浮動小数点数型の値です。

整数と浮動小数点数は、計算結果の型が異なることがあるので注意が必要です。

例えば、整数同士の割り算は切り捨ての整数となり、浮動小数点数との計算は浮動小数点数になります。

□数値と文字列の変換

桁数指定を行う際には、数値型と文字列型の変換もよく出てきます。

数値を文字列に変換するには、str()関数を使います。

逆に、文字列を数値に変換するには、int()やfloat()関数を使います。

例えば、整数の123を文字列に変換するには、下記のようにします。

num = 123
str_num = str(num)
print(str_num)  # "123"

また、文字列の”3.14″を浮動小数点数に変換するには、次のようにします。

str_num = "3.14"
float_num = float(str_num)
print(float_num)  # 3.14

このように、数値と文字列を相互に変換できることを覚えておくと、桁数指定の処理がスムーズに行えますよ。

さて、Pythonでの数値の扱い方を確認したところで、いよいよ桁数指定の方法を見ていきましょう。

書式指定や数値関数、文字列操作など、様々なアプローチがあります。

これから一つずつ、サンプルコードを交えて解説していきますので、ぜひ実践的なテクニックを身につけてくださいね。

●書式指定を使った桁数の指定

さて、Pythonで桁数を指定する方法の1つ目は、書式指定を使う方法です。

書式指定とは、文字列の中に特別な記号を埋め込んで、数値の表示形式を細かく制御する機能のことです。

書式指定を使えば、整数の桁数を指定したり、小数点以下の桁数を揃えたり、ゼロ埋めをしたりと、様々な桁数の調整が可能になります。

これから、具体的なサンプルコードを見ながら、書式指定のテクニックを身につけていきましょう。

○サンプルコード1:整数の桁数指定

まずは、整数の桁数を指定する方法から見ていきましょう。

次のようなコードを見てみてください。

num = 123
print(f"{num:5d}")  # "  123"
print(f"{num:3d}")  # "123"
print(f"{num:1d}")  # "123"

ここでは、整数の123を様々な桁数で表示しています。

書式指定では、f"{変数名:桁数d}"という形式を使います。

:の後の数字が表示する桁数で、dは整数を表す記号です。

実行結果を見ると、指定した桁数に合わせて、数値の前に空白が追加されているのがわかりますね。

例えば、"{num:5d}"と指定すると、5桁の幅で数値が表示され、足りない分は前に空白が入ります。

一方、"{num:1d}"のように、数値の桁数より小さい値を指定すると、桁数の指定は無視されます。

○サンプルコード2:小数点以下の桁数指定

次は、小数点以下の桁数を指定する方法を見ていきましょう。

次のコードを見てみてください。

num = 3.14159
print(f"{num:.2f}")  # "3.14"
print(f"{num:.4f}")  # "3.1416"
print(f"{num:.6f}")  # "3.141590"

ここでは、浮動小数点数の3.14159を様々な小数点以下の桁数で表示しています。

書式指定では、f"{変数名:.桁数f}"という形式を使います。

:の後のピリオドに続く数字が、小数点以下の表示桁数を表します。

fは浮動小数点数を表す記号ですね。

実行結果を見ると、指定した桁数に合わせて、小数点以下が丸められているのがわかります。

例えば、"{num:.2f}"と指定すると、小数点以下2桁までが表示され、それ以下は四捨五入されます。

"{num:.6f}"のように、元の数値より多い桁数を指定した場合は、足りない分が0で埋められますね。

○サンプルコード3:ゼロ埋めによる桁数揃え

続いては、ゼロ埋めを使って桁数を揃える方法を見ていきましょう。

次のコードを見てみてください。

num = 123
print(f"{num:05d}")  # "00123"
print(f"{num:03d}")  # "123"
print(f"{num:01d}")  # "123"

num = 3.14
print(f"{num:07.2f}")  # "003.14"
print(f"{num:05.2f}")  # "03.14"

ここでは、整数と浮動小数点数に対して、ゼロ埋めを使って桁数を揃えています。

書式指定では、f"{変数名:0桁数d}"f"{変数名:0桁数.小数点以下桁数f}"という形式を使います。

:の後の0が、ゼロ埋めを表す記号になります。

実行結果を見ると、指定した桁数に合わせて、数値の前に0が追加されているのがわかりますね。

例えば、"{num:05d}"と指定すると、5桁の幅で数値が表示され、足りない分は前に0が入ります。

浮動小数点数の場合は、"{num:07.2f}"のように、整数部と小数部の桁数を合わせて指定します。

○サンプルコード4:符号の表示制御

最後に、符号の表示を制御する方法を見ていきましょう。

次のコードを確認してみてください。

num = 123
print(f"{num:+d}")  # "+123"
print(f"{num: d}")  # " 123"
print(f"{num:-d}")  # "123"

num = -456
print(f"{num:+d}")  # "-456"
print(f"{num: d}")  # "-456"
print(f"{num:-d}")  # "-456"

ここでは、正の数と負の数に対して、符号の表示を制御しています。

書式指定では、f"{変数名:+d}"f"{変数名: d}"f"{変数名:-d}"という形式を使います。

:の後の+空白-が、それぞれ符号の表示方法を表します。

実行結果を見ると、+を指定した場合は正の数にも+が付き、空白を指定した場合は正の数の前に空白が入り、-を指定した場合は負の数にだけ-が付くのがわかります。

●数値関数を使った桁数の指定

書式指定に加えて、Pythonには数値関数を使って桁数を調整する方法もあります。

数値関数を使えば、四捨五入や切り捨て、切り上げなどの計算を手軽に行えるんですよね。

数値関数を使った桁数の指定は、書式指定とはまた違った使い勝手があります。

例えば、計算結果を特定の桁数で丸めたい場合や、小数点以下を削除したい場合などに便利です。

それでは、具体的なサンプルコードを見ながら、数値関数による桁数指定のテクニックを学んでいきましょう。

きっと、Pythonでの数値処理の幅がさらに広がるはずです。

○サンプルコード5:round()による四捨五入

まずは、round()関数を使った四捨五入の方法から見ていきましょう。

次のコードを見てみてください。

num = 123.456
print(round(num))  # 123
print(round(num, 1))  # 123.5
print(round(num, 2))  # 123.46
print(round(num, -1))  # 120.0

ここでは、浮動小数点数の123.456を様々な桁数で四捨五入しています。

round()関数は、第1引数に丸める対象の数値を、第2引数に丸める桁数を指定します。

第2引数を省略すると、小数点以下を四捨五入して整数になります。

実行結果を見ると、指定した桁数で数値が丸められているのがわかりますね。

例えば、round(num, 1)と指定すると、小数点以下1桁目で四捨五入されます。

round(num, -1)のように負の値を指定すると、整数部の指定した桁で四捨五入されます。

round()関数は、計算結果を指定した桁数で丸めたい場合に重宝します。

例えば、平均値を求めた後に小数点以下2桁で表示したい場合などです。

○サンプルコード6:floor()による切り捨て

次は、floor()関数を使った切り捨ての方法を見ていきましょう。

次のコードを確認してください。

import math

num = 123.456
print(math.floor(num))  # 123
print(math.floor(num * 10) / 10)  # 123.4
print(math.floor(num * 100) / 100)  # 123.45
print(math.floor(num * 0.1) / 0.1)  # 120.0

ここでは、floor()関数を使って、浮動小数点数の123.456を様々な桁数で切り捨てています。

floor()関数は、引数に指定した数値以下の最大の整数を返します。

つまり、小数点以下を切り捨てた値になりますね。

ただし、floor()関数だけでは、小数点以下の桁数を指定できません。

そこで、元の数値に10や100を掛けてからfloor()関数を適用し、その後で10や100で割ることで、小数点以下の桁数を調整しています。

例えば、math.floor(num * 10) / 10と指定すると、小数点以下1桁目で切り捨てられます。

math.floor(num * 0.1) / 0.1のように0.1を掛けると、整数部の1桁目で切り捨てられますね。

floor()関数は、計算結果を切り捨てて表示したい場合に便利です。

例えば、商品の価格を切り捨てて表示したい場合などです。

○サンプルコード7:ceil()による切り上げ

続いては、ceil()関数を使った切り上げの方法を見ていきましょう。

次のコードを見てみてください。

import math

num = 123.456
print(math.ceil(num))  # 124
print(math.ceil(num * 10) / 10)  # 123.5
print(math.ceil(num * 100) / 100)  # 123.46
print(math.ceil(num * 0.1) / 0.1)  # 130.0

ここでは、ceil()関数を使って、浮動小数点数の123.456を様々な桁数で切り上げています。

ceil()関数は、引数に指定した数値以上の最小の整数を返します。

つまり、小数点以下を切り上げた値になりますね。

floor()関数と同様に、ceil()関数だけでは小数点以下の桁数を指定できません。

そこで、元の数値に10や100を掛けてからceil()関数を適用し、その後で10や100で割ることで、小数点以下の桁数を調整しています。

例えば、math.ceil(num * 100) / 100と指定すると、小数点以下2桁目で切り上げられます。

math.ceil(num * 0.1) / 0.1のように0.1を掛けると、整数部の1桁目で切り上げられますね。

ceil()関数は、計算結果を切り上げて表示したい場合に活躍します。

例えば、部品の必要数を計算した後、切り上げて発注数を決める場合などです。

○サンプルコード8:trunc()による小数点以下の削除

最後に、trunc()関数を使った小数点以下の削除方法を見ていきましょう。

次のコードを確認してください。

import math

num = 123.456
print(math.trunc(num))  # 123
print(math.trunc(num * 10) / 10)  # 123.4
print(math.trunc(num * 100) / 100)  # 123.45
print(math.trunc(num * 0.1) / 0.1)  # 120.0

ここでは、trunc()関数を使って、浮動小数点数の123.456から小数点以下を削除しています。

trunc()関数は、引数に指定した数値の小数点以下を単純に削除した値を返します。

つまり、整数部だけを取り出すことができますね。

floor()関数と同じように、元の数値に10や100を掛けてからtrunc()関数を適用し、その後で10や100で割ることで、小数点以下の桁数を調整しています。

例えば、math.trunc(num * 100) / 100と指定すると、小数点以下2桁目までが残ります。

math.trunc(num * 0.1) / 0.1のように0.1を掛けると、整数部の1桁目までが残りますね。

trunc()関数は、小数点以下を単純に削除したい場合に便利です。

例えば、日付や時刻のデータから、年や月、時や分だけを取り出したい場合などです。

●文字列操作による桁数の指定

書式指定や数値関数とはまた違ったアプローチとして、文字列操作を使って桁数を指定する方法もあります。

Pythonには強力な文字列処理機能があるので、それを活用すれば、数値を文字列に変換した上で、桁数を調整することができるんですよね。

文字列操作を使った桁数指定は、少しテクニカルな印象があるかもしれません。

でも、Pythonの文字列処理は本当に便利で、覚えておくと様々な場面で役立つはずです。

それでは、具体的なサンプルコードを見ながら、文字列操作による桁数指定の方法を学んでいきましょう。

きっと、Pythonでの文字列処理の力を実感できるはずです。

○サンプルコード9:文字列のスライスによる桁数の取り出し

まずは、文字列のスライス機能を使って、数値の一部を取り出す方法から見ていきましょう。

次のコードを見てみてください。

num = 123.456
str_num = str(num)
print(str_num[:4])  # "123."
print(str_num[:6])  # "123.45"
print(str_num[:-1])  # "123.45"
print(str_num[:-3])  # "123."

ここでは、浮動小数点数の123.456を文字列に変換し、スライスを使って桁数を調整しています。

文字列のスライスは、文字列[開始位置:終了位置]という形式で指定します。

開始位置と終了位置は、インデックス(位置)を表す数値ですね。

実行結果を見ると、指定したインデックスの範囲で文字列が切り取られているのがわかります。

例えば、str_num[:4]と指定すると、先頭から4文字目までが取り出されます。

str_num[:-1]のようにマイナスのインデックスを指定すると、末尾からの位置を表しますね。

文字列のスライスを使えば、数値を文字列に変換した後、必要な桁数だけを取り出すことができます。

ただし、取り出した結果は文字列なので、必要に応じて数値型に変換する必要があります。

○サンプルコード10:zfill()によるゼロ埋め

最後に、zfill()メソッドを使ったゼロ埋めの方法を見ていきましょう。

次のコードを確認してください。

num = 123
str_num = str(num)
print(str_num.zfill(5))  # "00123"
print(str_num.zfill(3))  # "123"
print(str_num.zfill(1))  # "123"

num = -456
str_num = str(num)
print(str_num.zfill(5))  # "-0456"
print(str_num.zfill(3))  # "-456"

ここでは、整数の123と-456を文字列に変換し、zfill()メソッドを使ってゼロ埋めしています。

zfill()メソッドは、指定した桁数になるように、文字列の先頭にゼロを追加するメソッドです。

実行結果を見ると、指定した桁数に合わせて、先頭にゼロが追加されているのがわかりますね。

例えば、str_num.zfill(5)と指定すると、5桁になるように先頭にゼロが追加されます。

指定した桁数が元の文字列より短い場合は、ゼロ埋めは行われません。

zfill()メソッドを使えば、数値を文字列に変換した後、簡単にゼロ埋めができます。

これは、桁数を揃える必要がある場合に便利ですね。

ただし、zfill()メソッドは文字列型にしか使えないので、数値型を文字列型に変換する必要があります。

●よくあるエラーと対処法

Pythonで桁数指定を行う際、うまくいかずにエラーが出てしまうこともありますよね。

でも、エラーメッセージをしっかり読めば、原因を特定して対処することができます。

ここでは、桁数指定を行う際によく遭遇するエラーとその対処法を見ていきましょう。

エラーが出たときに慌てずに対処できるようになれば、スムーズにコーディングを進められるはずです。

○ValueErrorが出る場合

桁数指定を行う際に、よく出くわすエラーの1つがValueErrorです。

このエラーは、関数に渡された値が不適切な場合に発生します。

例えば、次のようなコードを実行するとValueErrorが発生しますね。

num = 123.456
print(round(num, 1.5))  # ValueError: 'float' object cannot be interpreted as an integer

ここでは、round()関数の第2引数に小数の1.5を指定しています。

しかし、round()関数の第2引数は整数を期待しているので、小数を渡すとValueErrorが発生するのです。

この場合の対処法は、第2引数を整数に修正することです。

例えば、次のように小数点以下1桁で四捨五入したい場合は、第2引数に1を指定します。

num = 123.456
print(round(num, 1))  # 123.5

このように、エラーメッセージをよく読んで、適切な値を関数に渡すことが大切ですね。

○指定した桁数より数値が大きい場合

桁数指定を行う際、指定した桁数より数値が大きい場合はどうなるでしょうか。

次のコードを見てみましょう。

num = 1234.56
print(f"{num:5.2f}")  # 1234.56

ここでは、f"{num:5.2f}"と指定して、全体で5桁、小数点以下2桁で表示しようとしています。

しかし、数値の1234.56は全体で6桁あるので、指定した桁数より大きくなってしまいます。

実行結果を見ると、指定した桁数より大きい場合は、桁数指定が無視されて、数値がそのまま表示されていますね。

つまり、指定した桁数より数値が大きい場合は、エラーは発生せず、桁数指定が効かないということです。

この場合の対処法は、数値に合わせて適切な桁数を指定することです。

例えば、次のように全体で7桁、小数点以下2桁で表示することができます。

num = 1234.56
print(f"{num:7.2f}")  # 1234.56

数値の大きさに合わせて、柔軟に桁数を指定することが大切ですね。

○マイナスの値を扱う場合

最後に、マイナスの値を扱う場合の注意点を見ていきましょう。

次のコードを見てみてください。

num = -123.456
print(f"{num:5.2f}")  # -123.46

ここでは、マイナスの値-123.456に対して、全体で5桁、小数点以下2桁で表示しようとしています。

実行結果を見ると、マイナス記号も桁数に含まれているのがわかりますね。

つまり、マイナスの値を扱う場合は、マイナス記号の分だけ桁数が1つ多くなることに注意が必要です。

この場合の対処法は、マイナス記号の分を考慮して、適切な桁数を指定することです。

例えば、次のように全体で6桁、小数点以下2桁で表示することができます。

num = -123.456
print(f"{num:6.2f}")  # -123.46

マイナスの値を扱う場合は、マイナス記号の分だけ桁数を調整することを忘れないようにしましょう。

まとめ

Pythonでの桁数指定について、書式指定、数値関数、文字列操作の3つのアプローチから解説してきました。

実践的なサンプルコードを通して、Pythonで数値データを自在に扱うテクニックを身につけることができたのではないでしょうか。

データの可視化やレポート作成など、これからの実務でも活躍してくれるはずです。

本記事を最後までお読みいただき、ありがとうございました。

Pythonでの数値処理の基礎力が養われ、より高度なデータ分析や機械学習への第一歩になれば幸いです。