目次
1. 前言
在 Python 中處理數值時,經常會遇到需要指定小數點位數的情況。
特別是在希望讓計算結果更易讀,或在金額計算等需要保持精確位數的場景中,這樣的操作會非常有用。
本篇文章將針對初學者到進階使用者,詳細說明如何在 Python 中指定小數點以下的位數。
2. Python 中指定小數點位數的基本方法
2.1 使用 round()
函數
在 Python 中最基本的方式是使用 round()
函數來指定小數點位數。這個函數會回傳四捨五入後的數值。
語法
round(數值, 位數)
- 數值: 要進行四捨五入的目標數值。
- 位數: 小數點後要保留的位數(若省略則會四捨五入為整數)。
範例
# 四捨五入到小數點後2位
result = round(3.14159, 2)
print(result) # 輸出: 3.14
注意事項
- 由於
round()
處理的是浮點數,可能會出現些微的誤差。 - 若指定的位數為負數,將會對小數點左邊的位數進行四捨五入。
範例
# 四捨五入到十位數
result = round(123.456, -1)
print(result) # 輸出: 120

2.2 使用 format()
函數與 f 字串
當需要將數值格式化為字串時,format()
函數與 f 字串(格式化字串常值)會非常有用。
format()
函數的語法
"{:.位數f}".format(數值)
範例
# 格式化為小數點後2位
result = "{:.2f}".format(3.14159)
print(result) # 輸出: '3.14'
f 字串的語法
f"{數值:.位數f}"
範例
# 使用 f 字串
pi = 3.14159
result = f"{pi:.2f}"
print(result) # 輸出: '3.14'
使用建議
round()
適合用於取得計算結果,format()
與 f 字串則適合用於資料顯示。
3. 進階的小數點操作方法
3.1 使用 Decimal
模組進行高精度計算
Python 的標準函式庫中提供了 decimal
模組,可以進行高精度的數值計算。這在金融運算或科學技術計算中特別實用。
基本用法
from decimal import Decimal, getcontext
# 設定小數點後保留 3 位的精度
getcontext().prec = 3
result = Decimal('1.2345') + Decimal('2.3456')
print(result) # 輸出: 3.58
與 round()
的差異
Decimal
可避免浮點數誤差的問題。- 可動態調整精度,方便根據不同用途進行控制。

4. 實際應用中指定小數點位數的範例
4.1 金額顯示中的應用
在處理貨幣金額的計算時,通常會將小數點位數固定為兩位。
範例
price = 123.456
formatted_price = f"${price:.2f}"
print(formatted_price) # 輸出: '$123.46'
4.2 科學計算中的精度控制
在科學技術計算中,常需要透過指定位數來格式化計算結果。
範例
result = "{:.4e}".format(0.00012345)
print(result) # 輸出: '1.2345e-04'
4.3 資料分析中顯示格式的調整
在調整 DataFrame 的顯示格式時,指定小數點位數會非常有幫助。
範例
import pandas as pd
data = {'A': [1.123456, 2.345678], 'B': [3.567890, 4.789012]}
df = pd.DataFrame(data)
# 指定顯示的小數點位數
pd.options.display.float_format = '{:.2f}'.format
print(df)
輸出結果
A B
0 1.12 3.57
1 2.35 4.79
5. 小數點操作時的注意事項與選擇最佳方法的建議
浮點數誤差
在一般的浮點數運算中,可能會產生微小的誤差,這是由於二進位制計算的限制所導致的。
效能考量
若不需要極高的計算精度,使用 round()
或 format()
會更有效率。
建議事項
- 在金融運算中建議使用
Decimal
模組,以避免精度誤差。 - 在資料顯示上,推薦使用
format()
或 f 字串來格式化輸出。 - 請根據實際應用情境選擇最合適的方式來處理小數點。
6. 總結
本篇文章詳細介紹了在 Python 中如何指定小數點位數的方法。round()
和 format()
等基礎技巧,以及使用 Decimal
模組進行高精度處理的進階方式都一一說明。
請根據不同的應用需求選擇適合的方法,讓你的 Python 程式開發更加靈活且精準。