2017-03-16 39 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

相關問題