📜  Python中的分数模块

📅  最后修改于: 2022-05-13 01:55:20.830000             🧑  作者: Mango

Python中的分数模块

该模块提供对有理数算术的支持。它允许从整数、浮点数、数字、小数和字符串创建 Fraction 实例。

分数实例:分数实例可以由一对整数、另一个有理数或一个字符串构成。分数实例是可散列的,应该被视为不可变的。

  1. class fractions.Fraction(numerator=0, denominator=1) :这要求分子和分母是数字的实例。返回有理数和一个带有值 =(分子/分母)的分数实例。如果分母 = 0,则会引发除零错误。
    from fractions import Fraction
       
    print (Fraction(11, 35))
    # returns Fraction(11, 35)
       
    print (Fraction(10, 18))
    # returns Fraction(5, 9)
      
    print (Fraction())
    # returns Fraction(0, 1)
    

    输出 :

    11/35
    5/9
    0
    
  2. class fractions.Fraction(other_fraction) :这要求 other_fraction 是numbers.Rational的实例,并返回具有相同值的分数实例。
  3. class fractions.Fraction(float) :这需要浮点实例并返回具有相同值的分数实例。
    from fractions import Fraction
      
    print (Fraction(1.13))
    # returns Fraction(1272266894732165, 1125899906842624)
    

    输出 :

    1272266894732165/1125899906842624
    
  4. class fractions.Fraction(decimal) :这需要十进制实例并返回具有相同值的分数实例。
    from fractions import Fraction
      
    print (Fraction('1.13'))
    # returns Fraction(113, 100)
    

    输出 :

    113/100
    
  5. class fractions.Fraction(字符串) :这需要字符串或 unicode实例实例,并返回具有相同值的分数实例。

    此实例的形式: [符号] 分子 ['/' 分母]
    这里,符号表示“+”或“-”,分子和分母是个位数的字符串。

    from fractions import Fraction
       
    print (Fraction('8/25'))
    # returns Fraction(8, 25)
       
    print (Fraction('1.13'))
    # returns Fraction(113, 100)
      
    print (Fraction('3/7'))
    # returns Fraction(3, 7)
      
    print (Fraction('1.414213 \t\n'))
    # returns Fraction(1414213, 1000000)
    

    输出 :

    8/25
    113/100
    3/7
    1414213/1000000
    
  6. 限制分母(最大分母=1000000):
    • 此方法对于查找给定浮点数的有理逼近很有用。
    • 该模块查找并返回最接近分母最多为 max_denominator 的分数。
    • 此模块还可用于通过使用numerator属性和使用denominator属性返回最低项中给定分数的分子。
    from fractions import Fraction
       
    print (Fraction('3.14159265358979323846'))
    # returns Fraction(157079632679489661923, 50000000000000000000)
       
    print (Fraction('3.14159265358979323846').limit_denominator(10000))
    # returns Fraction(355, 113)
       
    print (Fraction('3.14159265358979323846').limit_denominator(100))
    # returns Fraction(311, 99)
       
    print (Fraction('3.14159265358979323846').limit_denominator(10))
    # returns Fraction(22, 7)
       
    print (Fraction(125, 50).numerator)
    # returns 5
       
    print (Fraction(125, 50).denominator)
    # returns 2
    

    输出 :

    157079632679489661923/50000000000000000000
    355/113
    311/99
    22/7
    5
    2
    

对分数进行数学运算

from fractions import Fraction
   
print (Fraction(113, 100) + Fraction(25, 18))
# returns Fraction(2267, 900)
   
print (Fraction(18, 5) / Fraction(18, 10))
# returns Fraction(2, 1)
   
print (Fraction(18, 5) * Fraction(16, 19))
# returns Fraction(288, 95)
   
print (Fraction(18, 5) * Fraction(15, 36))
# returns Fraction(3, 2)
   
print (Fraction(12, 5) ** Fraction(12, 10))
# returns 2.8592589556010197

输出 :

2267/900
2
288/95
3/2
2.8592589556

使用数学模块的各种功能进行基于分数的计算

import math
from fractions import Fraction
   
print (math.sqrt(Fraction(25, 4)))
# returns 2.5
   
print (math.sqrt(Fraction(28,3)))
# returns 3.0550504633038935
   
print (math.floor(Fraction(3558, 1213)))
# returns 2
   
print (Fraction(math.sin(math.pi/3)))
# returns Fraction(3900231685776981, 4503599627370496)
   
print (Fraction(math.sin(math.pi/3)).limit_denominator(10))
# returns Fraction(6, 7)

输出 :

2.5
3.0550504633
2.0
3900231685776981/4503599627370496
6/7