fractions --- 分数¶
源代码 Lib/fractions.py
fractions 模块支持分数运算。
分数实例可以由一对整数,一个分数,或者一个字符串构建而成。
-
class
fractions.Fraction(numerator=0, denominator=1)¶ -
class
fractions.Fraction(other_fraction) -
class
fractions.Fraction(float) -
class
fractions.Fraction(decimal) -
class
fractions.Fraction(string) 第一个版本要求 numerator 和 denominator 是
numbers.Rational的实例,并返回一个新的Fraction实例,其值为numerator/denominator。 如果 denominator 为0将会引发ZeroDivisionError。 第二个版本要求 other_fraction 是numbers.Rational的实例,并返回一个Fraction实例且与传入值相等。 下两个版本接受float或decimal.Decimal的实例,并返回一个Fraction实例且与传入值完全相等。 请注意由于二进制浮点数通常存在的问题 (参见 浮点算术:争议和限制),Fraction(1.1)的参数并不会精确等于 11/10,因此Fraction(1.1)也 不会 返回用户所期望的Fraction(11, 10)。 (请参阅下文中limit_denominator()方法的文档。) 构造器的最后一个版本接受一个字符串或 unicode 实例。 此实例的通常形式为:[sign] numerator ['/' denominator]
其中的可选项
sign可以为 '+' 或 '-' 并且numerator和denominator(如果存在) 是十进制数码的字符串。 此外,float构造器所接受的任何表示一个有限值的字符串也都为Fraction构造器所接受。 不论哪种形式的输入字符串也都可以带有前缀和/或后缀的空格符。 这里是一些示例:>>> from fractions import Fraction >>> Fraction(16, -10) Fraction(-8, 5) >>> Fraction(123) Fraction(123, 1) >>> Fraction() Fraction(0, 1) >>> Fraction('3/7') Fraction(3, 7) >>> Fraction(' -3/7 ') Fraction(-3, 7) >>> Fraction('1.414213 \t\n') Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) >>> Fraction('7e-6') Fraction(7, 1000000) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal >>> Fraction(Decimal('1.1')) Fraction(11, 10)
The
Fractionclass inherits from the abstract base classnumbers.Rational, and implements all of the methods and operations from that class.Fractioninstances are hashable, and should be treated as immutable. In addition,Fractionhas the following properties and methods:在 3.2 版更改:
Fraction构造器现在接受float和decimal.Decimal实例。在 3.9 版更改: 现在会使用
math.gcd()函数来正规化 numerator 和 denominator。math.gcd()总是返回int类型。 在之前版本中,GCD 的类型取决于 numerator 和 denominator 的类型。-
numerator¶ 最简分数形式的分子。
-
denominator¶ 最简分数形式的分母。
-
as_integer_ratio()¶ 返回由两个整数组成的元组,两数之比等于该分数的值且其分母为正数。
3.8 新版功能.
-
classmethod
from_float(flt)¶ 只接受
float或numbers.Integral实例的替代性构造器。 请注意Fraction.from_float(0.3)与Fraction(3, 10)的值是不同的。
-
classmethod
from_decimal(dec)¶ 只接受
decimal.Decimal或numbers.Integral实例的替代性构造器。注解
从 Python 3.2 开始,在构造
Fraction实例时可以直接使用decimal.Decimal实例。
-
limit_denominator(max_denominator=1000000)¶ 找到并返回一个
Fraction使得其值最接近self并且分母不大于 max_denominator。 此方法适用于找出给定浮点数的有理数近似值:>>> from fractions import Fraction >>> Fraction('3.1415926535897932').limit_denominator(1000) Fraction(355, 113)
或是用来恢复被表示为一个浮点数的有理数:
>>> from math import pi, cos >>> Fraction(cos(pi/3)) Fraction(4503599627370497, 9007199254740992) >>> Fraction(cos(pi/3)).limit_denominator() Fraction(1, 2) >>> Fraction(1.1).limit_denominator() Fraction(11, 10)
-
__floor__()¶ 返回最大的
int<= self。 此方法也可通过math.floor()函数来使用:>>> from math import floor >>> floor(Fraction(355, 113)) 3
-
__ceil__()¶ 返回最小的
int>= self。 此方法也可通过math.ceil()函数来使用。
-
参见
numbers模块构成数字塔的所有抽象基类。