(Iron)模数运算符&的Python格式化问题“负零”

时间:2017-01-10 08:28:06

标签: python string-formatting ironpython modulo

今天我注意到IronPython2.7上的以下问题:

当格​​式化format_string时,我得到一个“negativ zero”。如果我使用Python2.7或Python3.4而不是IronPython,我会得到相同的结果。

>>> "%.2f" % -0.004
'-0.00'

然后我意识到,我可以通过将两个参数传递给格式字符串来消除零点:

>>> "%s%.2f" % ('x', -0.004)
'x0.00'

'x'是一个随机字符。所以,我在浮点值之前格式化另一个字符串,减号消失。但这不适用于Python2.7和Python3.4,我得到:

>>> "%s%.2f" % ('x', -0.004)
'x-0.00'

有人知道这里发生了什么吗?

格式化的“negativ zero”的目的是什么?

1 个答案:

答案 0 :(得分:0)

(编辑以考虑@MarkDikinson评论)

您可以先格式化数字,然后执行printf - 格式化:

"%.2f" % (round(-0.004, 2)+0)

+0可以删除负零号。

round也可以使用ndigits参数来指定方式 数字本身的舍入所需的许多数字(不是关于显示,由"%.2f"处理)