Python中的分数模块

在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