2017-03-16 75 views
1

python Decimal存储一个基数为10的数字,这个数字可以被认为是底部10的幂乘的比率。为什么decimal.Decimal对象不被认为是合理的?

那么为什么这会失败呢?

from decimal import Decimal 
from numbers import Rational 

assert issubclass(Decimal, Rational) 
+0

'assert'失败。为什么它不是'Rational'的一个子类是一个不同的问题。 – DyZ

+0

从粗略看一下小数点的文档,我发现这个模块做了一些舍入,尽管我知道它们不是。 –

回答

2

同样的原因floatRational:而floatDecimal所有非无限,非NaN值是合理的,该类型是要模拟现实数算术运算。例如,它们支持平方根:

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

哪个类用于对有理数或有理数子集进行建模。

(是的,没关系,你可以做2**0.5,而是把int强制为float。)因为`Decimal`不是Rational`的`子类

+0

对,我的错误是混淆了“存储理性数量”和“只支持理性操作” – Eric

相关问题