Python 的 Fraction 模块
在 Python 中,Fraction 模块支持有理数运算。使用此模块,我们可以从整数、浮点数、十进制数和其他数值以及字符串创建分数。
此类的构造函数接受分子和分母作为参数,并从中创建分数。分子的默认值为 0,分母的默认值为 1。当分母为 0 时,构造函数会引发 ZeroDivisionError 异常。
创建 Fraction 实例
首先,我们将了解如何使用分子和分母创建分数。
示例
from fractions import Fraction as frac print(frac(45, 54)) print(frac(12, 47)) print(frac(0, 15))
输出
5/6 12/47 0
处理浮点数
我们可以将一些浮点数作为 Fraction 对象的参数。如果我们提供精确的浮点数,它将尝试将其转换为整数类型的分子和分母值。
示例
from fractions import Fraction as frac print(frac(33.33)) print(frac('33.33'))
输出
2345390243441541/70368744177664 3333/100
使用字符串与 Fraction
让我们看看 Fraction 对象的字符串类型参数的其他一些示例。它也支持数字的符号,支持 + 或 - 号。
示例
from fractions import Fraction as frac print(frac('5/6')) print(frac('-25.12')) print(frac('96.251 \t\n')) print(frac('3.14159265359'))
输出
5/6 -628/25 96251/1000 314159265359/100000000000
限制分母
正如我们所见,有时 Fraction 对象中的分母非常大。因此,我们可以限制分母的长度。默认长度为 1000000。这有助于对浮点数据进行有理逼近。为了限制分母,可以使用名为 **limit_denominator()** 的函数。
示例
from fractions import Fraction as frac print(frac('3.14159265359')) print(frac('3.14159265359').limit_denominator(1000)) print(frac('3.14159265359').limit_denominator(100)) print(frac('3.14159265359').limit_denominator(10)) print(frac('36.25')) print(frac('36.25').numerator) print(frac('36.25').denominator)
输出
314159265359/100000000000 355/113 311/99 22/7 145/4 145 4
分数的数学运算
分数也支持数学运算,如加法、减法、乘法、除法、乘方等。
示例
from fractions import Fraction as frac print('Add: ' + str(frac('5/4') + frac('9/8'))) print('Subtract: ' + str(frac('15/20') - frac('2/8'))) print('Multiply: ' + str(frac('2/3') * frac('5/7'))) print('Divide: ' + str(frac('80/125') / frac('12/45'))) print('Power: ' + str(frac('5/6') ** 3))
输出
Add: 19/8 Subtract: 1/2 Multiply: 10/21 Divide: 12/5 Power: 125/216
平方根、向下取整和向上取整
此对象还支持平方根、向下取整、向上取整和其他一些运算。
示例
from fractions import Fraction as frac import math print('Square Root: ' + str(math.sqrt(frac(36, 64)))) print('Square Root: ' + str(frac(math.sqrt(frac(36, 64))))) print('Floor Value: ' + str(math.floor(frac('22/7')))) print('Ceiling Value: ' + str(math.ceil(frac('22/7'))))
输出
Square Root: 0.75 Square Root: 3/4 Floor Value: 3 Ceiling Value: 4
广告