麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python中使用format()函數對數字進行格式化

2023-04-25 12:32:02
字體:
來源:轉載
供稿:網友

本站在《Python中使用format()函數格式化字符串》一文中介紹了format()函數的基本用法。在這篇文章中將繼續介紹format()函數對數字進行格式化的方法。

關于format()函數的使用,本站共有3篇文章:

(1)Python中使用format()函數格式化字符串

(2)Python中使用format()函數對數字進行格式化

(3)Python中format()函數中的對齊與寬度問題

Python中使用format()函數格式化數字

使用format()函數格式化整型數據

在format()函數中,可以使用不同的字符指示符可以將整型數據轉換成不同的形式,如輸出其對應的二進制形式、八進制形式等。

Python中提供了如下幾種格式控制符

類型 含義
'b' 二進制格式。輸出以2為基的數字
'c' 字符格式。輸出數字對應的Unicode字符。
'd' 十進制格式。輸出以10為基的數字。
'o' 八進制格式。輸出以8為基的數字。
'x' 十六進制格式。使用小寫字符表示9以上的數字。
'X' 十六進制格式。使用大寫字符表示9以上的數字。如果格式符中指定了'#'指示符,則十六進制的前綴'0x'也會變成對應的大寫形式'0X'。
'n' 數字格式,與'd'相同,但它使用當前區域的設置來插入適當的數字分隔符。
None 作用與'd'相同。

下面舉幾個例子來說明其使用方法:

#格式化整型數字

num = 78
print("bin:{0:b}".format(num)) #二進制
print("hex:{0:x}".format(num)) #十六進制,字母小寫
print("Hex:{0:X}".format(num)) #十六進制,字母大寫
print("int:{0:d}".format(num)) #整型數字
print("oct:{0:o}".format(num)) #八進制數字
print("uchar:{0:c}".format(num)) #輸出對應的Unicode字符

其輸出結果如下:

bin:1001110
hex:4e
Hex:4E
int:78
oct:116
uchar:N

從輸出結果中,我們注意到對應的二進制、十六進制和八進制前面并沒有任何前綴。如果需要輸出前綴需要借助“#”格式指示符。下面對“#”進行專門介紹。

"#"格式符選項的使用

"#"指示符控制數字轉換格式的形式。不同的轉換類型,其樣式會有不同。該選項僅適用于整型、浮點類型、負數和小數類型。對于整型數據,當輸出格式為二進制、八進制、十六進制時,該指示符會在其輸出值前分別添加'0b','0o''0x'。對于浮點數、復數或小數來講,該指示符會使輸出值始終包含小數點,即使小數點后沒有其它內容也會輸出小數點。通常情況下,小數點后包含一個數字時才會出現小數點。

下面舉例子說明:

# '#'格式符的使用
print("bin:{0:#b}".format(26))
print("hex:{0:#x}".format(26))
print("Hex:{0:#X}".format(26))
print("oct:{0:#o}".format(26))
print("int:{0:#d}".format(26))
print("complex:{0:#}".format(3+8j))

輸出結果如下:

bin:0b11010
hex:0x1a
Hex:0X1A
oct:0o32
int:26
complex:(3.+8.j)
從以上例子可以看出,使用了“#”格式符后,輸出的二進制、八進制和十六進制前面都加了前綴,而對十進制整數沒有影響。對于復數,即使實部和虛部都是整數時,在使用了“#”格式符后,其輸出的實部和虛部都含有小數點,即使小數點后再沒有其它數字亦是如此。

使用format()函數格式化浮點數和小數類型

format()函數可以使用如下幾種格式符格式化浮點數或小數類型。

類型 含義
'e'

輸出數字的科學計數法形式。給定精度p,將數字格式化成以"e"分隔系數與指數的科學計數法形式。系數中小數點前有1位數字,小數點后有p位,共有p+1位有效數字。

若未指定精度,浮點(float)類型的小數點后會有6位數字,而小數類型(Decimal)會顯示出所有數字。除非指定了“#”格式符,小數點后沒有數字時,格式化后的數字將不會顯示小數點。

'E' 輸出科學計數法形式。作用與'e'相同,只不過使用大寫的'E'來分隔系數和指數部分。
'f' 定點數表示法。給定精度 p ,將數字格式化為小數點后恰有 p 位的十進制數形式。若未給出精度,對于float型數據,小數點后使用6位數字的精度,而對于Decimal數據將使用足夠大的精度來顯示所有的小數部分;若小數點后沒有數字,除非指定了“#”格式符,否則不會顯示小數點。
'F' 定點數表示法。作用與‘f’相同,但是會把nan轉換成NANinf轉換成INF。
'g'

通用格式。對于給定p >= 1的精度,將數字圓整為p位有效數字,然后將結果格式化為定點數格式或科學計數法格式(這完全取決于待格式化數字的大?。?。精度為0時將按精度為1時對待。具體規則如下:

假設以類型'e'和精度p-1對數字實施格式化時,其指數為exp。那么,如果 m <= exp < p ,這里待格式化的數為float類型時m=-4,待格式化的數為Decimal(小數)時,m=-6,則數字將以類型'f'和精度 p-1-exp被格式化。否則,數字將以類型'e'和精度p-1實施格式化。兩種情況下,小數尾部的0將被刪除,且在未指定"#"格式選項時,小數部分若沒有數字,小數點也將被移除。

在未給定精度時,浮點數(float)默認使用6位有效數字的精度。對于Decimal型數值,格式化結果的系數由值系數的位數組成;科學計數法用于絕對值小于1e-6的數和最小有效位數大于1的數,否則將使用定點數表示法。

無論設定什么樣的精度,正負無窮大、正負0,以及nan將分別被格式化為inf、-inf0、-0nan。

'G' 通用格式。與'g'相同,但當待格式化數字特別大時就會切換為'E',無窮大和NaN也會變為其大寫形式。
'n' 數字格式,與'g'相同,但它使用當前區域的設置來插入適當的數字分隔符。
'%' 百分比。將待格式化的數字乘以100并以固定格式('f')進行顯示,后面跟著一個“%”號。
None

對于float類型的數,其作用與'g'相同,除了以定點表示法格式化結果外,它總是包含小數點后至少一位數字。為了忠實地表示給定的值,所使用的精度也是盡可能大的。

對于Decimal類型的數,結合當前上下文十進制的值字母大小寫情況,其作用與 'g' 或 'G' 相同。

其整體效果是匹配由其它格式修飾符修改的str()函數輸出的結果。

下面分別舉例說明這些格式符的基本使用情況:

1、f與F格式符的使用舉例

import math

#未指定精度時,默認小數點后為6位
print("f格式未指定精度:{:f}".format(10.23))
#指定精度為4,小數點后未達到4位時,后邊補0
print("f格式指定精度為4:{:.4f}".format(10.23))
#指定精度為4,效果與上面相同
print("F格式指定精度為4:{:.4F}".format(10.23))
#指定精度為4,小數點后數位超出4時,進行四舍五入
print("f格式指定精度為4:{:.4f}".format(10.23456))
#指定精度為4,效果與上面相同
print("F格式指定精度為4:{:.4F}".format(10.23456))
#f格式,輸出小寫inf
print("f格式輸出inf:{:f}".format(math.inf))
#F格式,輸出大寫INF
print("F格式輸出INF:{:F}".format(math.inf))

輸出結果如下:

f格式未指定精度:10.230000
f格式指定精度為4:10.2300
F格式指定精度為4:10.2300
f格式指定精度為4:10.2346
F格式指定精度為4:10.2346
f格式輸出inf:inf
F格式輸出INF:INF

2、使用e或E格式控制符

#未指定精度,使用小寫e輸出科學計數形式,數值部分保留6位小數
print("e格式未指定精度:{:e}".format(12.345))
#未指定精度,使用大寫E輸出科學計數形式,數值部分保留6位小數
print("E格式未指定精度:{:E}".format(12.345))
#指定精度,數值部分不足6位時,后面補0
print("e格式指定精度為4:{:.5e}".format(12.345))
#指定精度,數值部分超過精度規定的小數位數時,進行四射五入
print("E格式指定精度為2:{:.2E}".format(12.345))

輸出結果如下:

e格式未指定精度:1.234500e+01
E格式未指定精度:1.234500E+01
e格式指定精度為4:1.23450e+01
E格式指定精度為2:1.23E+01

3、g與G格式控制符的使用

#未指定精度且未超出默認的6位有效數字時,原樣輸出
print("g格式未指定精度-1:{:g},{:g},{:g}".format(12.345,12.3456,0.123456))
#未指定精度,整數部分未達到6位有效數字,四舍五入
print("g格式未指定精度-2:{:g},{:g},{:g}".format(123.34567,123456.7,0.0001))
#整數部分超出6位有效數字或浮點數絕對值≤1e-5時
print("g格式未指定精度-3:{:g},{:g},{:g}".format(1234567,1234567.5,0.00001))
#指定精度時的各種情形
print("g格式指定精度-1:{:.5g},{:.5g},{:.5g}".format(12.345,12.3456,0.123456))
print("g格式指定精度-2:{:.5g},{:.5g},{:.5g}".format(123.34567,123456.7,0.0001))
print("g格式指定精度-3:{:.5g},{:.5g},{:.5g}".format(1234567,1234567.5,0.00001))
#g與G格式的對比
print("{:g},{:G},{:g},{:G},{:g},{:G}".format(1234567.8,1234567.8,
                                                                math.inf,math.inf,
                                                                math.nan,math.nan))

輸出結果如下:

g格式未指定精度-1:12.345,12.3456,0.123456
g格式未指定精度-2:123.346,123457,0.0001
g格式未指定精度-3:1.23457e+06,1.23457e+06,1e-05
g格式指定精度-1:12.345,12.346,0.12346
g格式指定精度-2:123.35,1.2346e+05,0.0001
g格式指定精度-3:1.2346e+06,1.2346e+06,1e-05
1.23457e+06,1.23457E+06,inf,INF,nan,NAN

在Python中,帶小數點的數默認為float類型,所以在使用g格式控制輸出時,若數的絕對值小于或等于1e-5時將使用科學計數法形式輸出,即語法中的m取值應為-4。

4、輸出百分數

print("{:%},{:%}".format(2.34,0.234))
print("{:.2%},{:.2%}".format(2.34,0.234))
num1 = 12
num2 = 29
print("結果為:{:.2%}".format(num1 / num2))

輸出結果如下:

234.000000%,23.400000%
234.00%,23.40%
結果為:41.38%
從輸出結果可以看出,第1個例子沒有指定精度,小數點后有6位,在給定精度時,小數點后按照給定的精度輸出。

輸出帶符號的數字字符串

在正常情況下,負數顯示負號,正數不顯示任何符號,但是根據實際需要,我們可以使用format()函數控制正負號的顯示情況。

在format()函數中,用于控制數字符號格式的格式控制符有以下3個:

類型 含義
'+' 指示正負數都要顯示符號。
'-' 指示只有負數才顯示符號(默認)。
space 正數使用前導空格,負數使用負號。

 下面舉例子說明其具體使用方法:

#正負數都顯示符號
print("正負數都顯示符號:{:+f},{:+f}".format(521.1314,-521.1314))
#只有負數顯示符號
print("只有負數顯示符號:{:-f},{:-f}".format(521.1314,-521.1314))
#不使用符號控制符
print("不使用控制符結果:{:f},{:f}".format(521.1314,-521.1314))
#使用空格,正數前有空格
print("使用空格控制結果:{: f},{: f}".format(521.1314,-521.1314))

輸出結果:

正負數都顯示符號:+521.131400,-521.131400
只有負數顯示符號:521.131400,-521.131400
不使用控制符結果:521.131400,-521.131400
使用空格控制結果: 521.131400,-521.131400

在以上輸出結果中注意最后一個當中正數前面有一個空格,負數前是沒有的。

使用千位分隔符來格式化數字

千位分隔符在金融領域運用較多,以增強數字的可讀性,其是在Python 3.1版中新增加進來的格式控制符。

下面舉例說明:

print("{:,}".format(1234567890))

輸出結果

1,234,567,890

在Python3.6版本中還新增了另外一種數位分隔符:_(下劃線)。

下劃線在數字中沒有實際意義,只是作為數位分隔符。在一些數據中添加這個符號以增加可讀性,如十六進制、二進制等。

print("{:_}".format(1234567890)) #十進制數
print("{:_X}".format(0X12EAF7B8)) #十六進制數
print("{:_b}".format(123456)) #二進制格式
print("{:_o}".format(123454)) #八進制

輸出結果

1_234_567_890
12EA_F7B8
1_1110_0010_0100_0000
36_1076

從上面的輸出結果可以看出,對于十進制數,其仍然是每3位加一個下劃線,而二進制、八進制和十六進制是每隔4個添加一個下劃線。

format()函數用于復數

使用format()函數可以方便的獲取復數的實部與虛部值。

com_num = 12 + 34j
print("實部:{0.real},虛部:{0.imag}".format(com_num))

輸出結果:

實部:12.0,虛部:34.0

總結

以上詳細講解了format()函數在格式化數字時各種情形下的使用情況,并用盡可能詳盡的例子來講解具體使用。如有問題請留言,也可以關注本站的公眾號了解更多的內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九一免费版在线观看 | 欧美色爱综合 | 亚洲视屏在线 | 在线观看免费视频麻豆 | 色蜜桃av| 久久午夜神器 | 欧美一级特级 | 色视频在线 | 久久成人激情视频 | 欧美视频一区二区三区四区 | 日本不卡一区二区三区在线观看 | 欧美日韩亚洲成人 | 欧美极品欧美精品欧美视频 | 免费欧美精品 | 中文字幕网址 | 久国产精品视频 | 综合网天天色 | 亚洲综合一区二区三区 | 免费99热在线观看 | 99精品国产一区二区三区 | 黑人一区二区三区四区五区 | wwwav国产| 97久久人人超碰caoprom | 成人在线观看免费爱爱 | 人成免费网站 | 免费看毛片网站 | 欧美日韩一区,二区,三区,久久精品 | 日本一区视频在线观看 | 伊人yinren22综合网色 | 欧美国产日韩在线观看成人 | 精品少妇v888av | 国产午夜亚洲精品 | 91美女啪啪| 嗯~啊~用力~高h | 成人国产精品一区二区毛片在线 | 久久成人国产精品入口 | 国产一区二区三区色淫影院 | 国产毛片网站 | 98国内自拍在线视频 | 天堂成人国产精品一区 | 国产一区二区三区在线观看视频 |