格式化输出,浮点数e,f,g保留位数的计算方式不同,e,f :%.3e/f:取小数点后三位,g:%.3g总共有效位数为3,不包括小数点
格式化輸出:format()
format():把傳統(tǒng)的%替換為{}來實(shí)現(xiàn)格式化輸出
2.使用位置參數(shù):在原有基礎(chǔ)上,通過位置的改變來讓替換的值根據(jù)位置改變(自我感覺沒什么用,還不如第一個好用)
'My name is {1},age:{0}'.format(18,'Anxc') 'My name is Anxc,age:18'3.字符填充(左對齊,右對齊,居中對齊)
'右對齊{:#>10}'.format(10) '右對齊########10'4.使用關(guān)鍵字參數(shù):利用key=value來實(shí)現(xiàn)一一對應(yīng)的賦值替換
'My name is{name},age:{age}'.format(name='Anxc',age=18) 'My name isAnxc,age:18'5.數(shù)字的精度輸出:自我感覺就像C語言的float類型的輸出。(格式:{:. x f}如果x為整數(shù)是無效的)
>>> '{:.4f}'.format(1/3) '0.3333' >>> '{:4f}'.format(100) '100.000000'#目前沒有發(fā)現(xiàn)整數(shù)是啥用處6.數(shù)字的進(jìn)制輸出
| 二進(jìn)制 | b |
| 八進(jìn)制 | o |
| 十進(jìn)制 | ? |
| 十六進(jìn)制 | x |
'18的二進(jìn)制:{:b}'.format(18) '18的二進(jìn)制:10010' >>> '18的八進(jìn)制:{:o}'.format(18) '18的八進(jìn)制:22' >>> '18的十六進(jìn)制:{:x}'.format(18) '18的十六進(jìn)制:12'
7.數(shù)字的千分位劃分
>>> '{:,}'.format(19012390123) '19,012,390,123'8.通過下標(biāo)來實(shí)現(xiàn)格式化
>>> person=['Anxc',18]'I am {0[0]},age:{0[1]}'.format(person) 'I am Anxc,age:18' >>> x=[12,13] >>> 'I am {0[0]},age:{1[1]}'.format(person,x) 'I am Anxc,age:13'兩種形式:
%,{}:兩者十分相近==》
不同處:
create_time = "%4d-%-3d-%02d" % (year, month-11, day) #out:2020-1 ?-07 create_time = "%4d-%03d-%02d" % (year, month-11, day) #out:2020-001-07 # %02d 意思是填充至兩位有效數(shù)字,不夠以0補(bǔ)充,注意不能把0改為其他的以其他數(shù)字補(bǔ)充,note:左邊補(bǔ)全零還可以用zfill,不過對象得是字符串類型的,%d對象則須要是整形類型的。格式化輸出,浮點(diǎn)數(shù)e,f,g保留位數(shù)的計算方式不同, e、f :%.3e/f? ==》取小數(shù)點(diǎn)后三位,g:%.3g==》總共有效位數(shù)為3位(不包括小數(shù)點(diǎn))
總體格式為:%m.n e/f/g
對g:而言m:總共顯示多少位(包括小數(shù)點(diǎn)和e的相關(guān)文字),意義和e、f的m相同,n:有效位數(shù)(不包括小數(shù)點(diǎn))默認(rèn)為6位,設(shè)置有效位數(shù),對g而言,m如果大于要顯示的數(shù)的位數(shù)則根據(jù)對齊號補(bǔ)空格,m如果小于要顯示的數(shù)的位數(shù),則根據(jù)有效位數(shù)或者e格式的情況顯示完全
對e,f:而言m:總共占多少位,n:設(shè)置小數(shù)點(diǎn)后顯示多少位,默認(rèn)為6位
,對f而言,m如果大于要顯示的數(shù)的位數(shù)則根據(jù)對齊號補(bǔ)空格,m如果小于要顯示的數(shù)的位數(shù),則根據(jù)有效位數(shù)或者e格式的情況顯示完全
?
print('%4g' % 1111.1111)
1111.11
print('%10g' % 1111.1111)? ==》觀察空白符==》10g和.10g規(guī)定的方向都不一樣10g表示 占10位,不全左邊補(bǔ)空格,10g,10后面沒加小數(shù)點(diǎn),即沒規(guī)定有效位數(shù),則用默認(rèn)有效位數(shù)6位
? ?1111.11
print('%1g' % 1111.1111)
1111.11
==>g前面不叫小數(shù)點(diǎn)
?
格式化符號說明備注 %f 保留小數(shù)點(diǎn)后面六位有效數(shù)字 float%e 保留小數(shù)點(diǎn)后面六位有效數(shù)字?
%g用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的0。即%g是根據(jù)結(jié)果自動選擇科學(xué)記數(shù)法還是一般的小數(shù)記數(shù)法
print("%g\n", 0.00001234);
? print("%g\n", 0.0001234);
? print("%.2g\n", 123.45); 有效位數(shù)為2,即精度為2,指數(shù)2大于等于給定精度2==》用%e
? print("%.2g\n", 23.45);?有效位數(shù)為2,即精度為2,指數(shù)1小于給定精度2==》用%f
上面四句輸出結(jié)果為:
1.234e-05? ??對于指數(shù) 小于-4或者大于5,按照%e的控制輸出,否則按照%f的控制輸出
0.0001234? ?對于指數(shù) 大于等于-4或者小于等于5,按照%f的控制輸出,否則按照%e的控制輸出
1.2e+02? ? ? ?大于等于給定精度的數(shù)值,按照%e的控制輸出,否則按照%f的控制輸出
23
對于指數(shù) 小于-4或者大于等于給定精度的數(shù)值,按照%e的控制輸出,否則按照%f的控制輸出.
print('%3g' % 1111.1111)? #g:%3g總共有效位數(shù)為3,不包括小數(shù)點(diǎn),
1111.11
print('%.3g' % 1111.1111)? #取3位有效數(shù)字--1110.0000
1.11e+03
print('%.4g' % 1111.1111)? #有效位數(shù)為4,即精度為4,1111=1.111*10的3次方,指數(shù)3小于給定精度4==》用%f
1111
print('%.6g' % 1111.1111)
1111.11
print('%.5g' % 1111.1111)
1111.1
print('%.4g' % 1111.1111)
1111
print('%f' % 1.11) ? ? ? ? # 默認(rèn)保留6位小數(shù)1.110000
print('%.1f' % 1.11) ? ? ? # 取1位小數(shù)1.1
print('%e' % 1.11) ? ? ? ? # 默認(rèn)6位小數(shù),用科學(xué)計數(shù)法1.110000e+00
print('%.3e' % 1.11) ? ? ? # 取3位小數(shù),用科學(xué)計數(shù)法1.110e+00
print('%g' % 1111.1111) ? ?# 默認(rèn)6位有效數(shù)字1111.11
print('%.7g' % 1111.1111) ?# 取7位有效數(shù)字1111.111
print('%.2g' % 1111.1111) ?# 取2位有效數(shù)字,1100.0000自動轉(zhuǎn)換為科學(xué)計數(shù)法1.1e+03
1.110000
1.1
1.110000e+00
1.110e+00
1111.11
1111.111
1.1e+03
print('%7g' % 1111.1111)
1111.11
print('%7f' % 1111.1111)
1111.111100
print('%.1f' % 1111.1111)
1111.1
print('%1f' % 1111.1111)
1111.111100
print('%10f' % 1111.1111)
1111.111100
print('%5f' % 1111.1111)
1111.111100
print('%3f' % 1111.1111)
1111.111100
?
總結(jié)
以上是生活随笔為你收集整理的格式化输出,浮点数e,f,g保留位数的计算方式不同,e,f :%.3e/f:取小数点后三位,g:%.3g总共有效位数为3,不包括小数点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ksweb安卓手机服务器教程-Termu
- 下一篇: C++ this指针显式使用