Python之fraction模块的使用
fraction模块的作用
Fraction类基于numbers模块中Rational定义的API来实现有理数的数值运行。
1、创建有理数,整数类型,计算最小的分公母的示例
import fractions for n, d in [(1, 2), (2, 4), (3, 6)]: f = fractions.Fraction(n, d) print('{}/{}={}'.format(n, d, f))
运行效果
1/2=1/2 2/4=1/2 3/6=1/2
2、创建有理数,字符串类型,计算最小的分公母的示例
import fractions for s in ['1/2', '2/4', '3/6']: f = fractions.Fraction(s) print('{}={}'.format(s, f))
运行效果
1/2=1/2 2/4=1/2 3/6=1/2
3、创建有理数,浮点类型,计算最小的分公母的示例
import fractions for s in ['0.5', '1.5', '2.0', '5e-1']: f = fractions.Fraction(s) print('{0:>4}={1}'.format(s, f))
运行效果
0.5=1/2 1.5=3/2 2.0=2 5e-1=1/2
4、直接使用浮点类型表示有理数(0.1会报错)
import fractions for s in [0.1, 0.5, 1.5, 2.0]: f = fractions.Fraction(s) print('{0}={1}'.format(s, f))
0.1=3602879701896397/36028797018963968 #需要decimal模块来解决 0.5=1/2 1.5=3/2 2.0=2
5、直接使用Decimal模块浮点字符串类表示有理数
import fractions import decimal for s in [decimal.Decimal('0.1'), decimal.Decimal('0.5'), decimal.Decimal('1.5'), decimal.Decimal('2.0')]: f = fractions.Fraction(s) print('{0}={1}'.format(s, f))
运行效果
0.1=1/10 0.5=1/2 1.5=3/2 2.0=2
6、有理数的算术运算
import fractions f1 = fractions.Fraction(1, 2) f2 = fractions.Fraction(3, 4) print('{} + {} = {}'.format(f1, f2, f1 + f2)) print('{} - {} = {}'.format(f1, f2, f1 - f2)) print('{} * {} = {}'.format(f1, f2, f1 * f2)) print('{} / {} = {}'.format(f1, f2, f1 / f2))
运行效果
1/2 + 3/4 = 5/4 1/2 - 3/4 = -1/4 1/2 * 3/4 = 3/8 1/2 / 3/4 = 2/3
7、通过分母的大小来控制这个分数值
import fractions import math print('PI =', math.pi) f_pi = fractions.Fraction(str(math.pi)) print('No limit =', f_pi) for i in [1, 6, 11, 60, 70, 90, 100]: limited = f_pi.limit_denominator(i) print('{0:8} = {1}'.format(i, limited))
运行效果
PI = 3.141592653589793
No limit = 3141592653589793/1000000000000000
1 = 3
6 = 19/6
11 = 22/7
60 = 179/57
70 = 201/64
90 = 267/85
100 = 311/99