亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 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轉換成NAN,inf轉換成INF
'g'

通用格式。對于給定p >= 1的精度,將數字圓整為p位有效數字,然后將結果格式化為定點數格式或科學計數法格式(這完全取決于待格式化數字的大?。>葹?em class="em">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-inf、0-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网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜国产成人av电影男同| 国产精品久久久久久久久久ktv| 992tv成人免费视频| 中文字幕视频在线免费欧美日韩综合在线看| 中文字幕亚洲专区| 2018国产精品视频| 亚洲午夜女主播在线直播| 亚洲女人天堂网| 北条麻妃一区二区三区中文字幕| 91在线直播亚洲| 日本一欧美一欧美一亚洲视频| 久久人人爽人人爽人人片av高请| 国外成人在线直播| 亚洲天堂成人在线视频| 亚洲一区二区免费| 97婷婷涩涩精品一区| 国产精品欧美一区二区三区奶水| 国产视频在线一区二区| 亚洲福利精品在线| 欧美午夜精品久久久久久人妖| 亚洲日本中文字幕免费在线不卡| 成人国产亚洲精品a区天堂华泰| 97超碰蝌蚪网人人做人人爽| 欧美电影免费播放| 欧美亚洲日本黄色| 亚洲国产精品大全| 这里只有精品在线播放| 国产成人精品视频| 国产精品1区2区在线观看| 国产日韩av在线播放| 91国产精品视频在线| 日韩激情片免费| 中文字幕欧美日韩在线| 97久久精品人人澡人人爽缅北| 欧美第一淫aaasss性| 精品视频在线观看日韩| 蜜臀久久99精品久久久久久宅男| 午夜精品久久久久久久久久久久| 亚洲视频自拍偷拍| 亚洲男人的天堂网站| 欧洲s码亚洲m码精品一区| 欧美日韩裸体免费视频| 91在线直播亚洲| 国产这里只有精品| 久久精品福利视频| 午夜剧场成人观在线视频免费观看| 国产一区二区三区高清在线观看| 成人黄色短视频在线观看| 久久久久久久国产| 欧美激情欧美激情| 亚洲第一网站男人都懂| 久久精品在线播放| 国产精品揄拍一区二区| 亚洲风情亚aⅴ在线发布| 亚洲第一av网站| 91日韩在线视频| 欧美日韩性生活视频| 欧美高清视频在线播放| 国产三级精品网站| 庆余年2免费日韩剧观看大牛| 97在线精品视频| 日韩在线观看免费网站| 国产精品久久久久久久7电影| 91在线无精精品一区二区| 欧美一二三视频| 日韩免费av在线| 久久精品福利视频| 亚洲一二三在线| 欧美性猛交丰臀xxxxx网站| 精品久久久久久久久久久久| 91chinesevideo永久地址| 国产精品福利观看| 午夜精品一区二区三区在线视| 中文字幕欧美亚洲| 欧美午夜视频一区二区| 在线观看国产精品日韩av| 在线观看日韩av| 亚洲视频在线观看免费| 高跟丝袜欧美一区| 丰满岳妇乱一区二区三区| 成人午夜黄色影院| 91日本视频在线| 亚洲欧美一区二区三区久久| 亚洲综合色激情五月| 国产美女精彩久久| 日韩高清电影好看的电视剧电影| 日本精品一区二区三区在线| 久久影院免费观看| 亚洲人永久免费| 国产精品成人一区| 国产成人精品视频在线| 色综合天天综合网国产成人网| 国产精品v日韩精品| 视频在线观看99| 亚洲天堂av高清| 日韩成人中文电影| 91夜夜揉人人捏人人添红杏| 国产精品久久国产精品99gif| 欧美综合国产精品久久丁香| 国产精品91免费在线| 色黄久久久久久| 中文字幕亚洲一区在线观看| 91香蕉国产在线观看| 国产精品久久久久久婷婷天堂| 精品欧美激情精品一区| 浅井舞香一区二区| 国产丝袜一区视频在线观看| 亚洲a∨日韩av高清在线观看| 国产一区二区动漫| 欧美性生活大片免费观看网址| 久久99精品国产99久久6尤物| 91日韩在线播放| 日本成人精品在线| 欧美性开放视频| 91精品91久久久久久| 色天天综合狠狠色| 国产午夜精品视频免费不卡69堂| 亚洲视频自拍偷拍| 日韩综合视频在线观看| 国产欧美中文字幕| 在线播放精品一区二区三区| 国产精品女视频| 国产精品成人v| 欧美亚洲在线视频| 国产在线观看精品一区二区三区| 国产裸体写真av一区二区| 欧美精品手机在线| 国产精品视频不卡| 久久精品国产99国产精品澳门| 日韩av色在线| 91亚洲午夜在线| 亚洲高清久久久久久| 国产不卡一区二区在线播放| 国产精品揄拍500视频| 欧美精品videos性欧美| 国产91|九色| 亚洲欧美在线一区二区| 久久精品国产久精国产一老狼| 久久青草精品视频免费观看| 另类视频在线观看| 日韩欧美在线国产| 欧美疯狂xxxx大交乱88av| 中文欧美日本在线资源| 欧美高清在线视频观看不卡| 欧美韩国理论所午夜片917电影| 亚洲男人第一av网站| 亚洲欧美在线看| 在线精品91av| 国产精品久久99久久| 国产精品久久久久久久久久| 国产精品视频男人的天堂| 国产在线a不卡| 亚洲精品久久久久久久久久久久久| 中文字幕久热精品视频在线| 欧美伊久线香蕉线新在线| 日韩欧美国产中文字幕| 狠狠躁夜夜躁人人躁婷婷91| 国产精品中文字幕久久久| 欧美成人免费大片| 91av在线视频观看| 91超碰中文字幕久久精品| 福利二区91精品bt7086| 亚洲精品国产精品久久清纯直播| 日本一区二区三区四区视频|