fractions --- 分?jǐn)?shù)?
源代碼 Lib/fractions.py
fractions 模塊支持分?jǐn)?shù)運(yùn)算。
分?jǐn)?shù)實(shí)例可以由一對(duì)整數(shù),一個(gè)分?jǐn)?shù),或者一個(gè)字符串構(gòu)建而成。
-
class
fractions.Fraction(numerator=0, denominator=1)? -
class
fractions.Fraction(other_fraction) -
class
fractions.Fraction(float) -
class
fractions.Fraction(decimal) -
class
fractions.Fraction(string) 第一個(gè)版本要求 numerator 和 denominator 是
numbers.Rational的實(shí)例,并返回一個(gè)新的Fraction實(shí)例,其值為numerator/denominator。 如果 denominator 為0將會(huì)引發(fā)ZeroDivisionError。 第二個(gè)版本要求 other_fraction 是numbers.Rational的實(shí)例,并返回一個(gè)Fraction實(shí)例且與傳入值相等。 下兩個(gè)版本接受float或decimal.Decimal的實(shí)例,并返回一個(gè)Fraction實(shí)例且與傳入值完全相等。 請(qǐng)注意由于二進(jìn)制浮點(diǎn)數(shù)通常存在的問(wèn)題 (參見(jiàn) 浮點(diǎn)算術(shù):爭(zhēng)議和限制),Fraction(1.1)的參數(shù)并不會(huì)精確等于 11/10,因此Fraction(1.1)也 不會(huì) 返回用戶所期望的Fraction(11, 10)。 (請(qǐng)參閱下文中limit_denominator()方法的文檔。) 構(gòu)造器的最后一個(gè)版本接受一個(gè)字符串或 unicode 實(shí)例。 此實(shí)例的通常形式為:[sign] numerator ['/' denominator]
其中的可選項(xiàng)
sign可以為 '+' 或 '-' 并且numerator和denominator(如果存在) 是十進(jìn)制數(shù)碼的字符串。 此外,float構(gòu)造器所接受的任何表示一個(gè)有限值的字符串也都為Fraction構(gòu)造器所接受。 不論哪種形式的輸入字符串也都可以帶有前綴和/或后綴的空格符。 這里是一些示例:>>> 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類(lèi)繼承自抽象基類(lèi)numbers.Rational,并實(shí)現(xiàn)了該類(lèi)的所有方法和操作。Fraction實(shí)例是可哈希的,并應(yīng)當(dāng)被視為不可變對(duì)象。 此外,Fraction還具有以下屬性和方法:在 3.2 版更改:
Fraction構(gòu)造器現(xiàn)在接受float和decimal.Decimal實(shí)例。-
numerator? 最簡(jiǎn)分?jǐn)?shù)形式的分子。
-
denominator? 最簡(jiǎn)分?jǐn)?shù)形式的分母。
-
from_float(flt)? 此類(lèi)方法可構(gòu)造一個(gè)
Fraction來(lái)表示 flt 的精確值,該參數(shù)必須是一個(gè)float。 請(qǐng)注意Fraction.from_float(0.3)的值并不等于Fraction(3, 10)。
-
from_decimal(dec)? 此類(lèi)方法可構(gòu)造一個(gè)
Fraction來(lái)表示 dec 的精確值,該參數(shù)必須是一個(gè)decimal.Decimal實(shí)例。注解
從 Python 3.2 開(kāi)始,在構(gòu)造
Fraction實(shí)例時(shí)可以直接使用decimal.Decimal實(shí)例。
-
limit_denominator(max_denominator=1000000)? 找到并返回一個(gè)
Fraction使得其值最接近self并且分母不大于 max_denominator。 此方法適用于找出給定浮點(diǎn)數(shù)的有理數(shù)近似值:>>> from fractions import Fraction >>> Fraction('3.1415926535897932').limit_denominator(1000) Fraction(355, 113)
或是用來(lái)恢復(fù)被表示為一個(gè)浮點(diǎn)數(shù)的有理數(shù):
>>> 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。 此方法也可通過(guò)math.floor()函數(shù)來(lái)訪問(wèn):>>> from math import floor >>> floor(Fraction(355, 113)) 3
-
__ceil__()? 返回最小的
int>= self。 此方法也可通過(guò)math.ceil()函數(shù)來(lái)訪問(wèn)。
-
-
fractions.gcd(a, b)? 返回整數(shù) a 和 b 的最大公約數(shù)。如果 a 或 b 之一非零,則
gcd(a, b)的絕對(duì)值是能同時(shí)整除 a 和 b 的最大整數(shù)。若 b 非零,則gcd(a,b)與 b 同號(hào);否則返回值與 a 同號(hào)。gcd(0, 0)返回0。3.5 版后已移除: 由
math.gcd()取代.
參見(jiàn)
numbers模塊構(gòu)成數(shù)字塔的所有抽象基類(lèi)。
