一日一技:在Python裏面作分數的運算

一日一技:在Python裏面作分數的運算

一日一技:在Python裏面作分數的運算

咱們在以前的文章裏面講到過,若是不使用Decimal模塊,那麼直接作浮點運算得到的小數,多是不許確的。例如 0.1+0.2 它的結果不是 0.3而是 0.30000000000000004。這不是Python的問題,而是浮點數在計算機中不能老是精確儲存致使的問題。ide

若是你如今須要作一個除法運算,可是你又忘記了 Decimal模塊的正確使用,那怎麼辦呢?code

這個時候,你想,若是Python裏面能夠直接進行分數運算就行了,分數不轉換爲小數,就不會出現浮點數精確性問題了。blog

好消息是,Python裏面,真的就能夠直接進行分數運算,輸入是分數,輸出仍是分數。ci

因此 0.1+0.2,在Python裏面你能夠獲得 3/10,而不是 0.30000000000000004。字符串

顯然,你不能直接 1/10+2/10,而是須要使用Python的 fractions模塊。it

它的使用方法爲:io

from fractions import Fraction
a = Fraction(1, 10)
b = Fraction(2, 10)
c = a + b
print(c)

運行效果以下圖所示:
一日一技:在Python裏面作分數的運算class

完美迴避了浮點數的不精確問題。import

其中 Fraction()的第一個參數爲分子,第2個參數爲分母。除此以外, Fraction()還能夠直接接收一個浮點數或者字符串形式的分數做爲參數,例如:方法

Fraction('3/7')
Fraction(0.27)

運行效果以下圖所示:

一日一技:在Python裏面作分數的運算

相關文章
相關標籤/搜索