首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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)

第一个版本要求分子分母是实例,numbers.Rational并返回一个Fraction带有值的新实例numerator/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实例。这种情况的通常形式是:

代码语言:javascript
复制
[sign] numerator ['/' denominator]

其中可选项sign可以是'+'或' - ',numerator并且denominator(如果存在)是十进制数字的字符串。此外,float构造函数也接受任何代表有限值并被构造函数接受的字符串Fraction。在任何一种形式中,输入字符串也可能具有前导和/或尾随空白。这里有些例子:

代码语言:javascript
复制
>>> 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类从抽象基类继承numbers.Rational,并实现所有从该类的方法和操作。Fraction实例是可散列的,应该被视为不可变的。另外,Fraction有以下方法:

在版本2.7中更改:Fraction构造函数现在接受floatdecimal.Decimal实例。

from_float(flt)

这个类方法构造了一个Fraction代表flt的确切值,它必须是a float。当心这Fraction.from_float(0.3)与价值不同Fraction(3, 10)

注意

从Python 2.7开始,您也可以Fraction直接从a 构建一个实例float

from_decimal(dec)

这个类方法构造了一个Fraction代表dec的确切值的值,它必须是decimal.Decimal

注意

从Python 2.7开始,您还可以Fraction直接从decimal.Decimal实例构建实例。

limit_denominator(max_denominator=1000000)

查找并返回最接近Fractionself具有至多max_denominator的分母。此方法对于找到给定浮点数的有理逼近很有用:

代码语言:javascript
复制
>>> from fractions import Fraction
>>> Fraction('3.1415926535897932').limit_denominator(1000)
Fraction(355, 113)

或者恢复一个表示为浮点的有理数:

代码语言:javascript
复制
>>> 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)

返回整数ab的最大公约数。如果ab不为零,那么绝对值gcd(a, b)是将ab分开的最大整数。如果b不为零,则gcd(a,b)b具有相同的符号; 否则它需要的符号一个。返回。gcd(0, 0)0

扫码关注腾讯云开发者

领取腾讯云代金券