2012-12-08 31 views
1

我有一個簡單的問題,我覺得應該有一個簡單的解決方案。如何格式化浮點數以便只顯示小數點後的數字?我寧願使用「{}」格式來完成此操作。python格式浮動數字打印.123不是0.123

>>> n = 0.12345 
>>> n 
0.12345 
>>> str(n)[1:] 
'.12345' 
>>> '{}'.format(n) 
'0.12345' 
>>> '{}'.format(str(n)[1:]) 
'.12345' 

我知道我可以使用str(n)[1:],但我不希望將數字轉換爲字符串。

回答

3

我不認爲有一個格式字符串刪除零。但是,你可以使用lstrip

In [25]: n = 0.12345 
In [26]: '{:.3f}'.format(n).lstrip('0') 
Out[26]: '.123' 

至少比str(n)[1:]更安全,這將刪除signficiant數字如果n是等於數大於1或小於-1。

+0

如果我正在嘗試使用item =('name',0.12345),並且我正在構建一個格式字符串爲'{}:{}'。(item [0],item [1])' ? – Cole

+1

那麼,如果前面的0是可以接受的,那麼''{::{:.3f}'。格式(* item)'可以工作,否則,你只需要分別構建每個部分:''{} '.format(item [0])+'{:.3f}'.format(item [1]).strip('0')'。 – unutbu