python factions module

简介

python 中处理分数的模块。

源代码 Lib/fractions.py

用法

分数实例可以由一对整数,一个分数,或者一个字符串构建而成。

1
2
3
4
5
class fractions.Fraction(numerator=0, denominator=1)
class fractions.Fraction(other_fraction)
class fractions.Fraction(float)
class fractions.Fraction(decimal)
class fractions.Fraction(string)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>> 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)

numerator 与 denominator

1
2
3
4
5
6
7
8
9
10
>>> from fractions import Fraction

>>> fra = fractions.Fraction('1.1')
>>> fra
Fraction(11, 10)

>>> fra.numerator # 分子
11
>>> fra.denominator # 分母
10

from_float(flt)

根据浮点数flt(flt为float实例)创建分数。

1
2
3
4
>>> fractions.Fraction.from_float(0.3)
Fraction(5404319552844595, 18014398509481984)
>>> fractions.Fraction.from_float(0.3).limit_denominator(10)
Fraction(3, 10)

from_decimal(dec)

根据dec(dec为decimal.Decimal实例)创建分数。

1
2
>>> fractions.Fraction.from_decimal(Decimal('1.25'))
Fraction(5, 4)

limit_denominator(max_denominator=1000000)

Finds and returns the closest Fraction to self that has denominator at most max_denominator. This method is useful for finding rational approximations to a given floating-point number:

1
2
3
4
5
6
7
8
9
10
>>> import math

>>> fractions.Fraction(math.pi)
Fraction(884279719003555, 281474976710656)

>>> fractions.Fraction(math.pi).limit_denominator(1000)
Fraction(355, 113)

>>> fractions.Fraction(math.cos(math.pi/3)).limit_denominator()
Fraction(1, 2)

fractions.gcd(a, b)

返回整数 a 和 b 的最大公约数。如果 a 或 b 之一非零,则 gcd(a, b) 的绝对值是能同时整除 a 和 b 的最大整数。若 b 非零,则 gcd(a,b) 与 b 同号;否则返回值与 a 同号。gcd(0, 0) 返回 0。

3.5 版后已移除: 由 math.gcd() 取代.

-------------本文结束感谢您的阅读-------------