2017-01-10 7 views
0

Сегодня я заметил, следующий вопрос о IronPython2.7:(железо) Python форматирование проблема с по модулю оператора и «отрицательного нуля»

При форматировании FORMAT_STRING, как это так, я получаю «Negativ ноль». Я получаю тот же результат, если я использую Python2.7 или Python3.4 вместо IronPython.

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

Тогда я понял, что я могу избавиться от Negativ нуля, передав два аргумента в строку формата следующим образом:

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

«х» случайный характер. Итак, я форматирую другую строку перед значением float, а минус исчезает. Это не работает с python2.7 и Python3.4, хотя, где я получаю:

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

Кто-нибудь знает, что здесь происходит?

Какова цель отформатированного «отрицательного нуля» вообще?

+0

Звучит как ошибка в IronPython. Предполагается, что он будет следовать за ссылочной реализацией CPython, где это возможно. –

+0

Я не уверен, что вы знаете, но отрицательный ноль - вполне допустимое значение float: '-0.0'. Он отличен от (но равного) положительного нуля. Не знаю, почему IronPython заставляет знак минус исчезать, а в строке формата есть другое значение. – Blckknght

ответ

0

(отредактированный принять @MarkDikinson комментарий в счет)

Вы можете форматировать число, а затем делать printf -like форматирование:

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

+0 находится там, чтобы удалить отрицательный нулевой знак ,

round также может принять ndigits аргумент, чтобы определить, как много цифр, что нужно для закругления самого числа (не говоря о дисплее, который обрабатывается "%.2f").

+1

Зачем использовать NumPy 'around' вместо встроенной функции' round' Python? (И вы, вероятно, захотите округлить до двух знаков после запятой ...) –

+0

@MarkDickinson, вы правы! Я использую numpy все время на работе, но есть и стандартный раунд;) – mguijarr

+1

@mguijarr установка numpy для ironpython может быть проблематичным – Odomontois

 Смежные вопросы

  • Нет связанных вопросов^_^