我有以下代码用于格式化字符串:
'%.2f' % n
如果 n
是负零 (-0
, -0.000
等),输出将是 -0.00
。如何让输出在
n
为正零或负零时都为 0.00
?(实现这个很简单,但我找不到一种我认为简洁的 pythonic 方式。理想情况下,有一种字符串格式选项我不知道。)
我有以下代码用于格式化字符串:
'%.2f' % n
如果 n
是负零 (-0
, -0.000
等),输出将是 -0.00
。n
为正零或负零时都为 0.00
?添加0:
>>> a = -0.0
>>> a + 0
0.0
你可以进行格式化:
>>> '{0:.3f}'.format(a + 0)
'0.000'
0.
改为 0
。 - jamylakimport re
re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
v*100
。也许一个简化的版本是:if round(v,2) == 0: v = 0.0
。问题是这会改变打印后的v值,这不太好。那么可以这样处理: "%.2f" % (0.0 if round(v,2) == 0 else v)
。 - Tim Adye>>> a = -0.0
>>> '%.2f' % ( a if a != 0 else abs(a) )
0.0
然而,需要注意的是,在使用%
进行字符串替换时,更推荐使用str.format
方法 - 在这种情况下(以及大多数简单情况下)语法几乎相同:
>>> '{:.2f}'.format(a if a != 0 else abs(a))
还要注意的是,更简洁的a or abs(a)
似乎不起作用 - 即使bool(a)
是False
。
import re
re.sub("[-+](0\.0+)", r"\1", number)
e.g.:
re.sub("[-+](0\.0+)", r"\1", "-0.0000") // "0.0000"
re.sub("[-+](0\.0+)", r"\1", "+0.0000") // "0.0000"
>>> x= '{0:.2f}'.format(abs(n) if n==0 else n)
>>> print(x)
0.00
if
条件语句的原因:
>>> -0.0000==0
True
>>> 0.000==0
True
>>> 0.0==0
True
'{0:.2f}'.format(abs(n) if n==0 else n)
。 - jamylak