Python进阶编程:编写更高效、优雅的Python代码
上QQ阅读APP看书,第一时间看更新

1.4.4 分数运算

对涉及分数计算的问题,通过代码处理可能并不容易,那么是否存在可以直接拿来使用的模块?

在Python中,fractions模块可以被用来执行包含分数的数学运算,相关代码(fraction_oper.py)示例如下:


from fractions import Fraction
a = Fraction(5, 4)
b = Fraction(7, 16)

print(f'{a} + {b} = {a + b}')
print(f'{a} * {b} = {a * b}')

c = a * b
print(f'numerator of {c} is: {c.numerator}')
print(f'denominator of {c} is: {c.denominator}')

print(f'float({c}) = {float(c)}')

print(f'{c} limit denominator 8 = {c.limit_denominator(8)}')

x = 3.75
print(f'{x} to fractions is: {Fraction(*x.as_integer_ratio())}')

执行py文件,输出结果如下:


5/4 + 7/16 = 27/16
5/4 * 7/16 = 35/64
numerator of 35/64 is: 35
denominator of 35/64 is: 64
float(35/64) = 0.546875
35/64 limit denominator 8 = 4/7
3.75 to fractions is: 15/4

大多数程序中一般不会出现分数的计算问题,但是有时候还是会用到的。如在允许接收分数形式测试并以分数形式执行运算的程序中,直接使用分数运算可以减少手动将分数转换为小数或浮点数的工作。