2012-12-08 23 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