[Python 3.1]
Я отслеживаю этот ответ :
class prettyfloat(float):
def __repr__(self):
return "%0.2f" % self
Я знаю, что мне нужно отслеживатьиз моих литералов с плавающей точкой (то есть замените 3.0
на prettyfloat(3.0)
и т. д.), и это нормально.
Но всякий раз, когда я делаю какие-либо вычисления, prettyfloat
объекты преобразуются в float
.
Какой самый простой способ исправить это?
РЕДАКТИРОВАТЬ:
Мне нужно ровно две десятичные цифры;и мне это нужно по всему коду, в том числе там, где я печатаю словарь со значениями float
внутри.Это затрудняет использование любых функций форматирования.
Я не могу использовать Decimal
глобальные настройки, так как я хочу, чтобы вычисления были с полной точностью (просто печатать с двумя десятичными точками).
@ Гленн Мейнард: я согласен, я не должен отменять __repr__
;во всяком случае, это было бы просто __str__
.Но это спорный вопрос из-за следующего:
@ Гленна Мейнарда и @singularity: я не буду подклассов float
, так как я согласен, что в конце это будет выглядеть очень уродливо.
Я перестану пытаться быть умным, и просто буду вызывать функцию везде, где печатается float
.Хотя мне очень грустно, что я не могу переопределить __str__
во встроенном классе float
.
Спасибо!