Ответ 1
Добавить ноль:
>>> a = -0.0
>>> a + 0
0.0
который вы можете форматировать:
>>> '{0:.3f}'.format(a + 0)
'0.000'
У меня есть следующее, чтобы отформатировать строку:
'%.2f' % n
Если n
- отрицательный нуль (-0
, -0.000
и т.д.), выход будет -0.00
.
Как сделать вывод всегда 0.00
для отрицательных и положительных нулевых значений n
?
(Это довольно просто, но я не могу найти то, что я бы назвал кратким питоническим способом. В идеале есть вариант форматирования строк, о котором я не знаю.)
Добавить ноль:
>>> a = -0.0
>>> a + 0
0.0
который вы можете форматировать:
>>> '{0:.3f}'.format(a + 0)
'0.000'
Самый простой способ - указать нулевой номер в вашем формате:
>>> 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)
например:.
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.00001 также форматируется как "-0,00". Это может быть так же запутанно. Ответы выше не позаботятся об этом (за исключением user278064, для которого требуется привязанное регулярное выражение).
Это уродливо, но это лучшее, что я могу сделать для этого случая:
import re
re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
Вы можете использовать функцию abs
In [27]: abs(-0)
Out[27]: 0
In [28]: abs(-1)
Out[28]: 1
In [29]: abs(-2)
Out[29]: 2
In [30]: abs(-2) == -2
Out[30]: False
In [31]: abs(-2) == 2
Out[31]: True