如何在python字符串中将负零始终格式化为正零?

Dan*_*Dan 23 python

我有以下格式化字符串:

'%.2f' % n
Run Code Online (Sandbox Code Playgroud)

如果n是负的零(-0,-0.000等)的输出将是-0.00.

如何使输出始终0.00为负值和正零值n

(实现这一点是相当直接的,但我找不到我称之为简洁的pythonic方式.理想情况下,我不知道有一个字符串格式化选项.)

eum*_*iro 63

加零:

>>> a = -0.0
>>> a + 0
0.0
Run Code Online (Sandbox Code Playgroud)

你可以格式化:

>>> '{0:.3f}'.format(a + 0)
'0.000'
Run Code Online (Sandbox Code Playgroud)

  • 这实际上让我笑得很开心.精彩. (23认同)
  • 惊人.即使我确定有人会使用这个技巧阅读一些代码并且会想"为什么他会把他的所有花车加零?!" (4认同)
  • 在您的示例中,您可以将"0."更改为"0". (2认同)

小智 8

一个非常密切相关的问题是 -0.00001 也被格式化为“-0.00”。这可能同样令人困惑。上面的答案不会解决这个问题(除了 user278064 的,它需要一个锚定的正则表达式)。

这很丑陋,但这是我能为这种情况做的最好的事情:

import re
re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
Run Code Online (Sandbox Code Playgroud)