Я хочу сделать «==» оператора использовать приближенное сравнение в моей программе: флоат значения х и у равны (==), еслиприближенное сравнение в питона
abs(x-y)/(0.5(x+y)) < 0.001
Что хороший способ сделать это? Учитывая, что float является встроенным типом, я не думаю, что могу переопределить оператор ==, не так ли?
Обратите внимание, что я хотел бы использовать другие функции float, единственное, что я хотел бы изменить, - это оператор равенства.
EDIT:
Спасибо за ответы, и я понимаю ваши рассуждения о читаемости и других вопросах.
Было сказано, что я действительно предпочел бы, если возможно, фактически использовать обычный тип float вместо нового класса или новой функции сравнения. Возможно ли переопределить оператор == для регулярных поплавков?
Мои причины ::
(а) все с помощью программы я пишу хочет поплавки можно сравнить этот путь
(б) нет никакого пути в мире, кто бы когда-либо хотели бы используйте default == для floats. Почему это даже на языке ???
(c) Мне не нравятся дополнительные слова в коде; очевидно, используя существующие результаты с плавающей точкой в каких-либо изменений в коде вообще
EDIT 2.
Теперь, когда я знаю, что я не могу перегрузить оператор == для поплавка, я должен изменить свой вопрос. Он станет настолько разные, что я буду делать новую в custom comparison for built-in containers
Удар для воздействия на читаемость, особенно для других. –
Оператор перегрузки '==' кажется симпатичным, но использование отдельной функции для этого почти всегда является лучшей идеей. – Constantin
У меня есть множество сравнений списков чисел (например), которые стали бы намного более запутанными, если бы я не мог переопределить оператор по умолчанию == – max