咱們在以前的文章裏面講到過,若是不使用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)
運行效果以下圖所示:class
完美迴避了浮點數的不精確問題。import
其中 Fraction()的第一個參數爲分子,第2個參數爲分母。除此以外, Fraction()還能夠直接接收一個浮點數或者字符串形式的分數做爲參數,例如:方法
Fraction('3/7') Fraction(0.27)
運行效果以下圖所示: