ру.'десятичный' мод .: почему флаги в контексте, а не числа - PullRequest
1 голос
/ 05 августа 2010

Вот пример, чтобы объяснить, о чем я:

c = Decimal(10) / Decimal(3)
c = Decimal(10) / Decimal(2)

Если я сделаю это, выведите c, неточные и округленные флаги будут подняты. Хотя результат точный. Разве флаги не должны быть атрибутами чисел, а не контекстом? Эта проблема особенно очевидна, когда я программирую длинные вычисления с использованием стека.

Чтобы задать более содержательный вопрос: как мне правильно с этим справиться? Кажется, я должен отслеживать все вручную. Если я уберу флажки перед вычислениями, я потеряю некоторую информацию о числах, вычисленных ранее. Который теперь может показаться точным. Это особенно раздражает при работе с числами, такими как 1.0000000154342.

Для критически важных приложений было бы очень приятно быть уверенным в том, что является точным, а что нет. Также было бы неплохо не поднимать неправильные флаги только потому, что это выглядит плохо.

Это все еще предполагает, что за этим есть хорошее обоснование, которого я не понял. Я был бы благодарен за объяснение.

1 Ответ

0 голосов
/ 05 августа 2010

Прочитайте это: http://docs.python.org/library/decimal.html#context-objects

У вас есть контекстные объекты, которые вы можете сохранить и восстановить, чтобы не потерять значения флага.

...