一文了解 Python 中分数的表示及处理方法

在 Python 中,有一个分数模块 Fractions,支持有理数运算。使用此模块,我们可以使用整数、浮点数或其他一些数值、字符串来创建分数。 Fractions 中,分数是由一对整数作为分子和分母组成。当分母为 0 时,它会引发零除异常。

使用整数创建分数

在 fractions 模块中,可以使用 fraction() 函数来创建分数。fraction() 函数包含两个参数,分别是分子和分母。

from fractions import Fraction as frac
print(frac(15, 45))
print(frac(11, 17))
print(frac(0, 5))

输出:

1/3
11/17
0

反过来,还可以从分数中提取分子分母。

from fractions import Fraction as frac
print(frac(11, 17).numerator)
print(frac(11, 17).denominator)

输出:

11
17

使用浮点数创建分数

还可以使用浮点数作为 Fraction() 的参数。函数会将浮点数转换为整数类型的分子和分母。在这种情况下,会尝试达到最近似值。如果浮点数以字符串形式提供,它将尝试返回相应的分数值。

from fractions import Fraction as frac
print(frac(0.5))
print(frac(0.33))
print(frac(1.33))
print(frac('0.5'))

输出:

1/2
5944751508129055/18014398509481984
748723438050345/562949953421312
1/2

我们所看到的,有时分母的值非常大。因此,我们可以使用 limit_denominator() 函数限制分母长度。默认长度为 1000000。

from fractions import Fraction as frac
print(frac(0.5))
print(frac(0.33))
print(frac(1.33).limit_denominator(max_denominator=100))
print(frac('0.5'))

输出:

1/2
5944751508129055/18014398509481984
133/100
1/2

分数的算术运算

fractions 的分数对象还可以进行算术运算,如加法、减法、乘法、除法、幂等。

from fractions import Fraction as frac
print(f"加法:{frac('5/2') + frac('9/5')}")
print(f"减法:{frac('1/2') - frac('1/4')}")
print(f"乘法:{frac('12/13') * frac('15/17')}")
print(f"除法:{frac('8/15') / frac('2/5')}")
print(f"幂:{frac('2/3') ** 3}")

输出:

加法43/10
减法1/4
乘法180/221
除法4/3
8/27

结合 math 模块,可以使用各种函数基于分数进行计算。

from fractions import Fraction as frac
import math
print(math.sqrt(frac(36, 64)))
print(frac(math.sqrt(frac(36, 64))))
print(math.floor(frac('22/7')))
print(math.ceil(frac('22/7')))

输出:

0.75
3/4
3
4

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!