[英]Strip trailing zeros from float while aligning with format()
我正在嘗試將浮點數存儲到有時可能包含尾隨零的文件中。
應用{:g}
,結果是預期的:尾隨的零被刪除。 當我嘗試在文本文件中對齊浮點數時,問題就來了,在這種情況下,我使用{:>10.0g}
,結果是用科學記數法寫的浮點數,而不是僅去除尾隨零。
這是MWE:
a = 546.0
b = 6785.35416
with open('format_test.dat', 'a') as f_out:
f_out.write('{:g} {:>15.3f}'.format(a, b)) # <-- NO ZEROS BUT NOT ALIGNED
f_out.write('\n')
f_out.write('{:>10.0g} {:>15.3f}'.format(a, b)) # <-- ALIGNED BUT IN SC NOTATION
輸出:
546 6785.354
5e+02 6785.354
有什么辦法可以在format()
端修復此問題,而無需在傳遞前修改浮點數?
g
會根據值的大小自動切換為科學計數法(請參閱docs )。 您可以通過對兩個值都使用f
來獲得所需的值:
>>> '{:>10.0f} {:>15.3f}'.format(546.0, 6785.354)
' 546 6785.354'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.