Python 浮點數 (float) 型別詳解:精度、運算、轉換與應用

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)) # 輸出:

print(large_num) # 輸出: 12300000000.0

浮點數的精度與表示方式

由於電腦內部使用二進位表示數字,而大部分小數無法用有限位數的二進位精確表示,因此浮點數存在精度限制。這意味著某些小數在電腦中只能儲存為近似值。

表示方式上,除了常規的小數表示,還可以使用科學記號 (例如 1.23e-5,代表 1.23 * 10-5)。

重要觀念: 由於精度限制,浮點數的比較 (特別是相等性比較 ==) 是不可靠的。通常建議使用一個很小的誤差範圍 (tolerance) 來判斷兩個浮點數是否「足夠接近」。

# 浮點數精度範例

a = 0.1

b = 0.2

c = 0.3

print(f"0.1 + 0.2 = {a + b}") # 輸出結果並非精確的 0.3

print(a + b == c) # 輸出: False,這是一個常見的陷阱!

# 正確的比較方法:使用誤差範圍

tolerance = 1e-9 # 定義一個很小的數作為誤差容忍度

print(abs((a + b) - c) < tolerance) # 輸出: True

浮點數的基本運算

Python 支援對浮點數進行各種數學運算,與整數類似:

加法 (+), 減法 (-), 乘法 (*), 除法 (/): 基本四則運算,結果為浮點數。

整數除法 (//): 相除後,結果為浮點數但無條件捨去小數部分 (例如 5.0 // 2.0 結果是 2.0)。

取餘數 (%): 得到兩個浮點數相除的餘數。

次方 (**): 計算一個浮點數的冪次方。

x = 2.5

y = 1.2

print(f"{x} + {y} = {x + y}") # 輸出: 3.7

print(f"{x} - {y} = {x - y}") # 輸出: 1.3

print(f"{x} * {y} = {x * y}") # 輸出: 3.0

print(f"{x} / {y} = {x / y}") # 輸出: 2.0833...

print(f"{x} // {y} = {x // y}") # 輸出: 2.0

print(f"{x} % {y} = {x % y}") # 輸出: 0.1

print(f"{x} ** {y} = {x ** y}") # 輸出: 3.3219...

浮點數與其他型別的轉換

在不同資料型別間轉換是常見操作:

float(): 可以將整數、數字字串轉換為浮點數。

int(): 將浮點數轉換為整數 (無條件捨去小數部分)。

str(): 將浮點數轉換為字串。

# 將整數轉換為浮點數

int_num = 10

float_num_from_int = float(int_num)

print(f"float(10) -> {float_num_from_int}") # 輸出: 10.0

# 將字串轉換為浮點數

str_num = "3.14"

float_num_from_str = float(str_num)

print(f"float('3.14') -> {float_num_from_str}") # 輸出: 3.14

# 將浮點數轉換為整數 (無條件捨去小數)

float_num = 7.8

int_num_from_float = int(float_num)

print(f"int(7.8) -> {int_num_from_float}") # 輸出: 7

# 將浮點數轉為字串

float_num_to_str = 3.14

str_num_from_float = str(float_num_to_str)

print(f"str(3.14) is a {type(str_num_from_float)}") # 輸出:

特殊浮點數值

Python 的浮點數標準 (IEEE 754) 包含了三個特殊值:

正無窮大: float('inf')

負無窮大: float('-inf')

非數字 (Not a Number): float('nan'),表示未定義或無效的數值 (例如 0/0 的結果)。

import math

print(float('inf') > 1e100) # 輸出: True

print(float('-inf') < -1e100) # 輸出: True

# NaN 的一個奇特特性是它不等於任何值,包括它自己!

print(float('nan') == float('nan')) # 輸出: False

# 因此需要用 math.isnan() 來檢查

print(math.isnan(float('nan'))) # 輸出: True

浮點數的應用

浮點數在程式設計中主要用於以下場景:

科學計算: 表示和計算物理量、數學公式等。

金融計算: 表示貨幣金額、利率、匯率等。

圖形學: 表示 2D/3D 座標、顏色值 (如 0.0 到 1.0 的範圍)。

機器學習: 模型的權重參數、數據特徵等通常都是用浮點數表示。

總結

Python 的浮點數 (float) 型別是處理連續數值的基礎。雖然它存在二進位精度限制,但這也是所有現代程式語言的共同特性。透過使用誤差範圍進行謹慎比較,並了解其運算規則和特殊值,浮點數可以被廣泛且可靠地應用於各種科學計算、工程應用和數據分析場景。了解 float 的特性和限制,對於寫出正確、可靠的程式碼至關重要。

黄金推荐

途乐和陆巡全面对比,途乐和陆巡哪个好?
365bet体育投注地址

途乐和陆巡全面对比,途乐和陆巡哪个好?

✨ 01-17 💎 价值: 557
燃气壁炉 vs 电壁炉:哪个更适合你的家?全面对比解析
365bet体育投注地址

燃气壁炉 vs 电壁炉:哪个更适合你的家?全面对比解析

✨ 01-07 💎 价值: 4092
为什么猎豹是地球上跑得最快的动物?
365bet体育投注地址

为什么猎豹是地球上跑得最快的动物?

✨ 10-02 💎 价值: 7388