如果你现在需要做一个除法运算,但是你又忘记了 Decimal
模块的正确使用,那怎么办呢?
这个时候,你想,如果Python里面可以直接进行分数运算就好了,分数不转换为小数,就不会出现浮点数精确性问题了。
好消息是,Python里面,真的就可以直接进行分数运算,输入是分数,输出还是分数。
所以 0.1+0.2
,在Python里面你可以得到 3/10
,而不是 0.30000000000000004
。
显然,你不能直接 1/10+2/10
,而是需要使用Python的 fractions
模块。
它的使用方法为:
from fractions import Fraction
a = Fraction(1, 10)
b = Fraction(2, 10)
c = a + b
print(c)
运行效果如下图所示:
完美回避了浮点数的不精确问题。
其中 Fraction()
的第一个参数为分子,第2个参数为分母。除此之外, Fraction()
还可以直接接收一个浮点数或者字符串形式的分数作为参数,例如:
Fraction('3/7')
Fraction(0.27)
运行效果如下图所示: