用 Python 指定小數點位數的方法【從初學者到進階者的詳細解說】

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 字串則適合用於資料顯示。
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

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 程式開發更加靈活且精準。