Python 有理数(分数)
任何可以表示为 p/q 形式的商或分数的数都称为有理数。Python 库的分数模块提供了有理数运算的功能。
此模块定义了一个 Fraction 类。它的对象可以通过多种方式构成,如下所示:
Fraction(num, denom)
Fraction 构造函数的第一个版本接收分子和分母的两个参数。默认分子为 0,默认分母为 1。分母的值为 0 将引发 ZeroDivisionError。
>>> from fractions import Fraction >>> n1 = Fraction(2,5) >>> n1 Fraction(2, 5) >>> n2 = Fraction(6,15) >>> n2 Fraction(2, 5) >>> n3 = Fraction(10,1) >>> n3 Fraction(10, 1) >>> n3 = Fraction(10) >>> n3 Fraction(10, 1)
请注意,分子和分母参数在除以公因子后将减少到最小值。
Fraction 构造函数也可以接收字符串参数,前提是它包含有效的数字表示。
>>> n1 = Fraction('5')
>>> n1
Fraction(5, 1)
>>> n2 = Fraction('4/7')
>>> n2
Fraction(4, 7)
>>> n3 = Fraction('0.25')
>>> n3
Fraction(1, 4)
>>> n4 = Fraction('1.23E4')
>>> n4
Fraction(12300, 1)浮点数也可以作为构造函数的参数。但是,由于浮点数以纯二进制形式表示,因此所得 Fraction 对象的分子和分母的商可能不精确。另一方面,将 Decimal 类对象作为参数也会产生一个 Fraction 对象。
>>> from fractions import Fraction
>>> from decimal import Decimal
>>> n1 = Fraction(2.1)
>>> n1
Fraction(4728779608739021, 2251799813685248)
>>> n2 = Fraction(Decimal('2.1'))
>>> n2
Fraction(21, 10)所有算术运算都可以对 Fraction 对象进行。
>>> n1 = Fraction(2,3) >>> n2 = Fraction(1,2) >>> n1+n2 Fraction(7, 6) >>> n1-n2 Fraction(1, 6) >>> n1*n2 Fraction(1, 3) >>> n1/n2 Fraction(4, 3)
仅回顾一下如何在商的形式中执行随机数算术:

Fraction 对象有两个属性,分子和分母,可以独立访问。
>>> n1 = Fraction(2,3) >>> n1.numerator 2 >>> n1.denominator 3
Fraction 类具有以下有用的方法,用于查找小于商的最大整数(底值)和大于商的最小整数(顶值)。
>>> n1 = Fraction(355,113) >>> n1.__floor__() 3 >>> n1.__ceil__() 4
另一个类方法 limit_denominator() 返回最接近的分数,其分母最大等于指定值。
>>> Fraction('2.71828').limit_denominator(400)
Fraction(1071, 394)本文讨论了 Python 标准库中 fractions 模块的功能和函数。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP