9.5. fractions — 分数¶
2.6 新版功能.
源代码 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 methods:在 2.7 版更改:
Fraction构造器现在接受float和decimal.Decimal实例。-
from_float(flt)¶ 此类方法可构造一个
Fraction来表示 flt 的精确值,该参数必须是一个float。 请注意Fraction.from_float(0.3)的值并不等于Fraction(3, 10)。
-
from_decimal(dec)¶ This class method constructs a
Fractionrepresenting the exact value of dec, which must be adecimal.Decimal.注解
From Python 2.7 onwards, you can also construct a
Fractioninstance directly from adecimal.Decimalinstance.
-
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)
-
-
fractions.gcd(a, b)¶ 返回整数 a 和 b 的最大公约数。如果 a 或 b 之一非零,则
gcd(a, b)的绝对值是能同时整除 a 和 b 的最大整数。若 b 非零,则gcd(a,b)与 b 同号;否则返回值与 a 同号。gcd(0, 0)返回0。
参见
numbers模块构成数字塔的所有抽象基类。
