3.8 分数运算

问题

你进入时间机器,突然发现你正在做小学家庭作业,并涉及到分数计算问题。或者你可能需要写代码去计算在你的木工工厂中的测量值。

解决方案

fractions 模块可以被用来执行包含分数的数学运算。比如:

  1. >>> from fractions import Fraction
  2. >>> a = Fraction(5, 4)
  3. >>> b = Fraction(7, 16)
  4. >>> print(a + b)
  5. 27/16
  6. >>> print(a * b)
  7. 35/64
  8.  
  9. >>> # Getting numerator/denominator
  10. >>> c = a * b
  11. >>> c.numerator
  12. 35
  13. >>> c.denominator
  14. 64
  15.  
  16. >>> # Converting to a float
  17. >>> float(c)
  18. 0.546875
  19.  
  20. >>> # Limiting the denominator of a value
  21. >>> print(c.limit_denominator(8))
  22. 4/7
  23.  
  24. >>> # Converting a float to a fraction
  25. >>> x = 3.75
  26. >>> y = Fraction(*x.as_integer_ratio())
  27. >>> y
  28. Fraction(15, 4)
  29. >>>

讨论

在大多数程序中一般不会出现分数的计算问题,但是有时候还是需要用到的。比如,在一个允许接受分数形式的测试单位并以分数形式执行运算的程序中,直接使用分数可以减少手动转换为小数或浮点数的工作。

原文:

http://python3-cookbook.readthedocs.io/zh_CN/latest/c03/p08_calculating_with_fractions.html