在Python中,小数模块支持有理数算法。使用此模块,我们可以从整数,浮点数,十进制以及其他一些数值和字符串创建分数。
有分数实例的概念。它由一对作为分子和分母的整数组成。
分数fraction.Fraction类用于创建分数对象。它需要分子和分母。分子的默认值为0,分母为1。当分母为0时,将引发ZeroDivisionError。
首先,我们将看到该类如何使用分子和分母创建分数。
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对象的字符串类型参数的其他示例。它还支持数字符号。它支持+或-号。
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
正如我们所看到的,有时分数对象中的分母非常大。因此我们可以限制分母的长度。默认长度为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