Python 浮點數 (float) 型別詳解:精度、運算、轉換與應用
在 Python 程式設計中,浮點數 (float) 是一種用於表示帶有小數部分的數字的資料型別。本文將深入探討 Python 浮點數的各個方面,包括定義、精度、表示方式、運算、型別轉換、特殊值,以及實際應用與注意事項。
什麼是浮點數 (float)?
浮點數是指帶有小數點的數字,可以用來表示分數、小數或非常大/非常小的數值。在 Python 中,浮點數屬於 float
型別。
# 浮點數範例
pi = 3.14159
price = 99.99
small_num = 0.000001
large_num = 1.23e10 # 科學記號表示法,等於 1.23 * 10^10
print(type(pi)) # 輸出: <class 'float'>
浮點數的精度與表示方式
由於電腦內部使用二進位表示數字,而大部分小數無法用有限位數的二進位精確表示,因此浮點數存在精度限制。這意味著某些小數在電腦中只能儲存為近似值。
可以用小數或科學記號表示(例如1.23e-5
,代表1.23 * 10^-5
)
重要觀念: 由於精度限制,浮點數的比較 (特別是相等性比較) 應該謹慎。通常建議使用一個很小的誤差範圍 (tolerance) 來判斷兩個浮點數是否「足夠接近」。
# 浮點數精度範例
a = 0.1
b = 0.2
c = 0.3
print(a + b == c) # 輸出: False (因為 0.1 + 0.2 的結果略大於 0.3)
# 使用誤差範圍進行比較
tolerance = 1e-9 # 一個很小的數
print(abs((a + b) - c) < tolerance) # 輸出: True
浮點數的基本運算
Python 支援對浮點數進行各種數學運算,與整數類似:
- 加法 (+): 兩個浮點數相加。
- 減法 (-): 兩個浮點數相減。
- 乘法 (*): 兩個浮點數相乘。
- 除法 (/): 兩個浮點數相除,結果為浮點數。
- 整數除法 (//): 兩個浮點數相除,結果為浮點數 (但捨去小數部分,只保留整數部分)。
- 取餘數 (
%
): 得到兩個浮點數相除的餘數。 - 次方 (
**
): 計算一個浮點數的冪次方。
x = 2.5
y = 1.2
print(x + y) # 輸出: 3.7
print(x - y) # 輸出: 1.3
print(x * y) # 輸出: 3.0
print(x / y) # 輸出: 2.0833333333333335
print(x // y) # 輸出: 2.0
print(x % y) # 輸出: 0.1
print(x ** y) # 輸出: 3.3219970854819653
浮點數與其他型別的轉換
-
float()
: 可以將其他型別(例如整數、字串)轉換為浮點數。 -
int()
: 將浮點數轉成整數(無條件捨去)。 -
str()
: 將浮點數轉成字串。
# 將整數轉換為浮點數
int_num = 10
float_num = float(int_num)
print(float_num) # 輸出: 10.0
# 將字串轉換為浮點數 (字串內容必須是合法的數字)
str_num = "3.14"
float_num = float(str_num)
print(float_num) # 輸出: 3.14
# 將浮點數轉換為整數 (無條件捨去小數部分)
float_num = 7.8
int_num = int(float_num)
print(int_num) #輸出: 7
# 將浮點數轉為字串
float_num = 3.14
str_num = str(float_num)
print(type(str_num)) # <class 'str'>
特殊浮點數值
Python 的浮點數包含三個特殊值:
float('inf')
或float('Inf')
: 正無窮大。float('-inf')
或float('-Inf')
: 負無窮大。float('nan')
或float('NaN')
: "Not a Number" (非數字),表示未定義或無效的數值。
print(float('inf') > 1000000) # 輸出: True
print(float('-inf') < -1000000) # 輸出: True
print(float('nan') == float('nan')) #輸出: False (NaN不等於任何值,包括它自己)
import math
print(math.isnan(float('nan'))) # 輸出: True (檢查是否為 NaN)
浮點數的應用
浮點數在程式設計中主要用於以下場景:
- 科學計算: 表示和計算物理量、數學公式等。
- 金融計算: 表示貨幣金額、利率等。
- 圖形學: 表示座標、顏色等。
- 機器學習: 模型參數、數據特徵等通常用浮點數表示。
總結
Python 的浮點數 (float) 型別是一種用於表示帶有小數部分數字的資料型別。雖然存在精度限制,但透過謹慎的比較和適當的處理,浮點數可以廣泛應用於各種科學計算、工程應用和數據分析場景。 了解 float 的特性和限制,對於寫出正確、可靠的程式碼至關重要。