Пітон Decimal
зберігає номер базового 10, який можна розглядати як співвідношення з потужністю 10 на дні.
Так чому ж це відбувається?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
Відповіді:
2 для відповіді № 1З тієї ж причини float
не є Rational
: при цьому всі не нескінченні, не-NaN значення float
або Decimal
є раціональними, типи призначені для моделювання арифметики реального числа. Наприклад, вони підтримують квадратні корені:
2.0**0.5
Decimal(2).sqrt()
що клас, призначений для моделювання раціональних чи або підмножини раціоналів, не буде.
(Так, добре, ви можете це зробити 2**0.5
, але що примушує int до float.)