Python Decimal
przechowuje numer bazy 10, który można traktować jako stosunek o mocy 10 na dole.
Dlaczego więc to się nie udaje?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
Odpowiedzi:
2 dla odpowiedzi № 1Ten sam powód float
nie jest Rational
: podczas gdy wszystkie nieskończone, nie-NaN wartości float
lub Decimal
są racjonalne, typy są przeznaczone do modelowania arytmetyki liczb rzeczywistych. Na przykład obsługują pierwiastki kwadratowe:
2.0**0.5
Decimal(2).sqrt()
których klasa przeznaczona do modelowania liczb wymiernych lub podzbioru wymierników nie.
(Tak, dobrze, możesz to zrobić 2**0.5
, ale to zmusza int do float.)