問題
你需要將數字格式化輸出,並控制数字的位數、對齊、千位分隔符合其他的細節。
解決方案
格式化輸出單個數字的時候,可以使用內建的format()函式,比如:
x=1234.56789
print(format(x,'0.2f'))
print(format(x,'>10.1f'))
print(format(x,'<10.1f'))
print(format(x,'^10.1f'))
print(format(x,','))
print(format(x,'0,.1f'))
'''1234.57
1234.6
1234.6
1234.6
1,234.56789
1,234.6
'''
如果你想使用指數記法,將f改成e或者e(取決於指數輸出的大小寫形式)。比如:
print(format(x, 'e')) # ->1.234568e+03
print(format(x, '0.2e')) # ->1.23e+03
同時指定寬度和精度的一般形式是[<>^]?with[,]?(.digits)?
,其中width和digits為整數,?代表可選部分。同樣的格式也被用在字串的format()方法中。比如:
print(f'value is ') # ->value is 1.235
討論
數字格式化輸出通常是比較簡單的,上面演示的技術同時適用於浮點數和decimal模組中的decimal數字物件。
當指定數字的位數後,結果值會根據round()函式同樣的規則進行四捨五入返回,比如:
print(format(x,'0.1f')) # ->1234.6
print(format(-x,'0.1f')) # ->-1234.6
包含千分位隔格式跟本地化沒有關係。如果你需要根據地區來顯示千位符,你需要自己去調查下locale模組中的而寒暑。你同樣也可以使用字串的translate()方法來交換千位符。比如:
swap_separators=
print(format(x,',').translate(swap_separators)) # ->1.234,56789
在很多python**中會看到使用%來格式化數字的,比如:
print('%0.2f'%x)
print('%10.1f'%x)
print("%-10.1f"%x)
'''1234.57
1234.6
1234.6
'''
這種格式化方法也可行的,不過比更加先進的format()要差點一點。比如,在使用%操作符格式化數字的時候,一些特性(新增千位符)並不能被支援。 數字格式化輸出
int a 12345678 格式為sring輸出 label1.text string.format asdfadsfadsfasdf a label2.text asdfadsf a.tostring adsfasdf label1.text string.format asdfadsfadsf...
C 數字格式化輸出
int a 12345678 格式為sring輸出 label1.text string.format asdfadsfadsfasdf a label2.text asdfadsf a.tostring adsfasdf label1.text string.format asdfadsfadsf...
C 數字格式化輸出
int a 12345678 格式為sring輸出 label1.text string.format asdfadsfadsfasdf a label2.text asdfadsf a.tostring adsfasdf label1.text string.format asdfadsfadsf...