Pythonで浮動小数点数(float)を print() で表示すると、通常は見やすい長さに自動的に丸められて出力されます。しかし、科学技術計算やデバッグなどで、より多くの桁数(または特定の桁数)を表示させたい場合があります。
この記事では、format() 関数や f-string を使用して、浮動小数点数の表示桁数を細かく制御する方法について解説します。
小数点以下の桁数を指定する
浮動小数点数の表示形式を指定するには、書式指定子 .{桁数}f を使用します。
1. f-string を使用する方法(推奨)
Python 3.6以降であれば、f-string の中で変数の後ろにコロン : を付け、書式を指定するのが最も簡潔です。
構文: f"{値:.{桁数}f}"
import math
# 円周率 (3.1415926535...)
pi_value = math.pi
# デフォルトの表示
print(f"デフォルト: {pi_value}")
# 小数点以下 2桁
print(f"2桁: {pi_value:.2f}")
# 小数点以下 10桁
print(f"10桁: {pi_value:.10f}")
# 小数点以下 50桁(精度の限界を確認)
print(f"50桁: {pi_value:.50f}")
実行結果:
デフォルト: 3.141592653589793
2桁: 3.14
10桁: 3.1415926536
50桁: 3.14159265358979311599796346854418516159057617187500
2. format() 関数を使用する方法
format() 組み込み関数を使用しても同様の結果が得られます。
構文: format(値, ".{桁数}f")
number = 1 / 7
print(f"値: {number}")
# 小数点以下 20桁を表示
formatted_str = format(number, ".20f")
print(f"20桁: {formatted_str}")
実行結果:
値: 0.14285714285714285
20桁: 0.14285714285714284921
浮動小数点数の誤差を確認する
Pythonの float は通常、64ビット倍精度浮動小数点数で実装されており、有効桁数は約15〜17桁です。 そのため、表示桁数を極端に増やすと、内部的な「計算誤差」や「表現できない値」が可視化されることがあります。
例えば、0.3 という数値は2進数では正確に表現できないため、桁数を増やして表示するとその実態が見えます。
val = 0.3
print(f"通常表示: {val}")
print(f"30桁表示: {val:.30f}")
実行結果:
通常表示: 0.3
30桁表示: 0.299999999999999988897769753748
通常は 0.3 と表示されていますが、内部的には 0.2999... という近似値で保持されていることがわかります。デバッグ時に「なぜか計算が合わない」という場合は、このように表示桁数を増やして確認することが有効です。
まとめ
- 浮動小数点数の表示桁数を制御するには、f-string の
:.nfまたはformat(val, ".nf")を使用します。 nに小数点以下の桁数を指定します(例:.2fで2桁)。- 桁数を増やすことで、浮動小数点特有の微細な誤差を確認することができます。
