3 3數字的格式化輸出

2022-10-06 12:06:15 字數 1561 閱讀 3361

問題

​ 你需要將數字格式化輸出,並控制数字的位數、對齊、千位分隔符合其他的細節。

解決方案

​ 格式化輸出單個數字的時候,可以使用內建的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...