为什么 decimal.Decimal 对象不被认为是有理数?
Why is a decimal.Decimal object not considered rational?
一个pythonDecimal
存储了一个以10为底的数,可以认为是一个比率,底部是10的幂。
那为什么会失败呢?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
同样的原因 float
不是 Rational
:虽然 float
或 Decimal
的所有非无限、非 NaN 值都是有理数,但类型是有意的模拟实数运算。例如,它们支持平方根:
2.0**0.5
Decimal(2).sqrt()
class 用于模拟有理数或有理数的子集不会。
(是的,好吧,你可以做 2**0.5
,但这会将 int 强制转换为 float。)
一个pythonDecimal
存储了一个以10为底的数,可以认为是一个比率,底部是10的幂。
那为什么会失败呢?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
同样的原因 float
不是 Rational
:虽然 float
或 Decimal
的所有非无限、非 NaN 值都是有理数,但类型是有意的模拟实数运算。例如,它们支持平方根:
2.0**0.5
Decimal(2).sqrt()
class 用于模拟有理数或有理数的子集不会。
(是的,好吧,你可以做 2**0.5
,但这会将 int 强制转换为 float。)