为什么decimal.Decimal对象不被认为是理性的?

时间:2017-03-16 00:02:03

标签: python decimal rational-number

python Decimal存储一个基数为10的数字,可以认为它是底部10的幂的比率。

那为什么会失败?

from decimal import Decimal
from numbers import Rational

assert issubclass(Decimal, Rational)

1 个答案:

答案 0 :(得分:2)

相同的原因float不是Rational:虽然floatDecimal的所有非无限非NaN值都是合理的,但这些类型都是为了建模实数算术。例如,它们支持平方根:

2.0**0.5
Decimal(2).sqrt()

一个用于模拟有理数或有理数子集的类不会。

(是的,好的,你可以做2**0.5,但是将int强制转换为浮点数。)