On this page
9.5. 分数-有理数
2.6 版的新Function。
源代码: Lib/fractions.py
fractions模块提供对有理数算术的支持。
分数实例可以由Pair整数,另一个有理数或字符串构造。
类别
fractions.
Fraction
(*分子= 0 *,*分母= 1 *)类别
fractions.
Fraction
(其他分数)-
- class *
fractions.
Fraction
(* float *)
- class *
类别
fractions.
Fraction
(十进制)类别
fractions.
Fraction
(字符串)- 第一个版本要求* numerator 和 denominator 是numbers.Rational的实例,并返回值
numerator/denominator
的新Fraction实例。如果 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 实例。此实例的通常形式为:
- 第一个版本要求* numerator 和 denominator 是numbers.Rational的实例,并返回值
[sign] numerator ['/' denominator]
其中可选的sign
可以是''或'-',而numerator
和denominator
(如果存在)是十进制数字的字符串。此外,float构造函数接受的表示有限值的任何字符串也将被Fraction构造函数接受。任一种形式的 Importing 字符串也可以具有前导和/或尾随空格。这里有些例子:
>>> 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)
Fraction类继承自抽象 Base Classnumbers.Rational,并实现该类的所有方法和操作。 Fraction实例是可哈希的,应视为不可变的。此外,Fraction具有以下方法:
在 2.7 版中进行了更改:Fraction构造函数现在接受float和decimal.Decimal实例。
from_float
(* flt *)
from_decimal
(* dec *)- 此类方法构造一个Fraction,表示** dec *的确切值,该值必须为decimal.Decimal。
Note
从 Python 2.7 起,您还可以直接从decimal.Decimal实例构造Fraction实例。
limit_denominator
(* max_denominator = 1000000 *)- 查找并返回分母最大为 max_denominator 的最接近的Fraction到
self
。此方法对于查找给定浮点数的有理逼近很有用:
- 查找并返回分母最大为 max_denominator 的最接近的Fraction到
>>> 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
。
- 返回整数* a 和 b 的最大公约数。如果 a 或 b 都不为零,则
See also
Module numbers
组成数字塔的抽象 Base Class。