# Python 輸出數字 同時滿足逗號格式和顯示到小數點第2位 發布日期:2023.05.21 標籤:python 格式化輸出、數字格式化、組合格式 ### 數字格式化 | Number | Format | Output | Description | | --- | --- | --- | --- | | 3.1415926 | {:.2f} | 3.14 | 浮點數,顯示到小數點第2位 | | 3.1415926 | {:+.2f} | +3.14 | 浮點數,顯示到小數點第2位,顯示正負符號 | | -1 | {:+.2f} | -1.00 | 浮點數,顯示到小數點第2位,顯示正負符號 | | 2.71828 | {:.0f} | 3 | 顯示到小數點第0位,四捨五入 | | 5 | {:0>2d} | 05 | 將數字用0補全,從左邊開始補全,補到長度2 | | 5 | {:x<4d} | 5xxx | 用x補全,從右邊開始補全,補到長度4 | | 1000000 | {:,} | 1,000,000 | 用逗號顯示數字格式 | | 0.25 | {:.2%} | 25.00% | 百分比表示法 | | 1000000000 | {:.2e} | 1.00e+09 | 指數表示法,科學記號表示法 | | 13 | {:10d} | 13 | 靠右對齊,默認長度10 | | 13 | {:<10d} | 13 | 靠左對齊,默認長度10 | | 13 | {:^10d} | 13 | 置中對齊,默認長度10 | ### 實際應用 常用的3種print變數的方法 1. f-string (f字串) 簡單的表示法,直接把變數用大括弧框起來,在變數後面加冒號,格式加在冒號後面即可 ```python temperature = 28.812345 probability = 0.668 print(f'今天的溫度是{temperature}度') print(f'今天的溫度是{temperature:.2f}度') print(f'今天的溫度是{temperature:.0f}度') print(f'今天的溫度是{temperature:3.0f}度') print(f'今天的溫度是{temperature:3.0f}度,今天降雨機率是{probability :.2%}') # 今天的溫度是28.812345度 # 今天的溫度是28.81度 # 今天的溫度是29度 # 今天的溫度是 29度 # 今天的溫度是 29度,今天降雨機率是66.80% ``` 1. str.format() (字串format) 用大括弧表示輸出位置,格式放在大括弧裡面,變數放在format裡面,在多變數輸出的時候比較好用 ```python temperature = 28.812345 probability = 0.668 print('今天的溫度是{}度'.format(temperature)) print('今天的溫度是{temp}度'.format(temp=temperature)) print('今天的溫度是{:.2f}度'.format(temperature)) print('今天的溫度是{:.0f}度'.format(temperature)) print('今天的溫度是{:3.0f}度'.format(temperature)) print('今天的溫度是{:3.0f}度,今天降雨機率是{:.2%}'.format(temperature, probability)) # 今天的溫度是28.812345度 # 今天的溫度是28.812345度 # 今天的溫度是28.81度 # 今天的溫度是29度 # 今天的溫度是 29度 # 今天的溫度是 29度,今天降雨機率是66.80% ``` 1. % Operator 用%來表示格式,簡化了大括弧跟冒號,但比較不適合用百分比表示法 ```python temperature = 28.812345 probability = 0.668 print('今天的溫度是%f度'%temperature) print('今天的溫度是%.2f度'%temperature) print('今天的溫度是%.0f度'%temperature) print('今天的溫度是%3.0f度'%temperature) print('今天的溫度是%3.0f度,今天降雨機率是%.2f' %(temperature, probability)) # 今天的溫度是28.812345度 # 今天的溫度是28.81度 # 今天的溫度是29度 # 今天的溫度是 29度 # 今天的溫度是 29度,今天降雨機率是0.67 ``` ### 組合應用 Example 1. 同時滿足 - 痘號顯示數字格式 - 顯示到小數點第0位 - 靠右對齊,總長度7 - 多變數輸出 ```python 變數A = 1_000_000.12 變數B = 200_000.34 變數C = 30_000.56 print(f"變數A = {變數A:,.0f} ; 變數B = {變數B:>8,.0f} ; 變數C = {變數C:,.0f}") # 變數A = 1,000,000 ; 變數B = 200,000 ; 變數C = 30,001 ``` (注意順序不能隨意改變,`>8`不能放在`,`右邊,否則出來格式會錯) Example 2. 同時滿足 - 痘號顯示數字格式 - 顯示正負號 - 靠右對齊,總長度10 - 多變數輸出 - 字串format 輸出 ```python print("{:<8} {:>+10,}".format("green", -1000)) # green -1,000 ``` (注意順序不能隨意改變,`+`不能放在`>`左邊,否則出來格式會錯) ### 將format存成function多次使用 當今天要頻繁改變格式的時候,卻又不想每次都去找格式的位置,再改成想要的格式,這樣太累了,所以我們可以用把format儲存到另一個function中,如下 ```python ## set user preferred format num_format = "{:,},".format ## use elsewhere print(num_format(1000000.123)) # 1,000,000 ```