1. 浮動小数点演算の不正確さ

例1

x = 1/10
y = 1/5
z = x + y
print(z)  # 期待される出力は0.3

出力

0.30000000000000004

解決策:Pythonのdecimalモジュールを使用すると、10進数を正確に表現し、浮動小数点の不正確さを回避できます。 

from decimal import Decimal
x = Decimal("1") / Decimal("10")
y = Decimal("1") / Decimal("5")
z = x + y
print(z)  # 期待される出力は0.3

出力

0.3

2. オーバーフローエラー

例1

Pythonにおけるfloatのオーバーフローエラーの例を以下に示します。

num1 = 9e309
num2 = 2
result = num1 * num2
print(result)

出力

inf

解決策:floatの値が大きすぎる場合、PythonはOverflowErrorを発生させます。このエラーを回避するには、Decimalモジュールを使用して大きな数を処理し、floatのオーバーフローエラーを防ぐことができます。例:

num1 = Decimal("9e309")
num2 = Decimal(2)
result = num1 * num2
print(result)

出力

1.8E+310

3. 丸め誤差

例1

# 0.1 + 0.2を計算しようとしています
x = 1/10
y = 1/5
z = x + y
print(z)

出力

0.30000000000000004

解決策:round()関数を使用して結果を丸めることができます

x = 1/10
y = 1/5
z = x + y
rounded_z = round(z, 2)
print(rounded_z)

出力

0.3