よくあるPythonの問題 - 3 浮動小数点型

By JoeVu, at: 2023年1月12日14:30

Estimated Reading Time: __READING_TIME__ minutes

Common Python Problems - [3] Float Data Types
Common Python Problems - [3] Float Data Types

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
Tag list:
- Python
- Mistake
- Problem
- Float Data Type
- Decimal

Subscribe

Subscribe to our newsletter and never miss out lastest news.