3.8 分数�算¶
问题¶
ä½ è¿›å…¥æ—¶é—´æœºå™¨ï¼Œçª�ç„¶å�‘çŽ°ä½ æ£åœ¨å�šå°�å¦å®¶åºä½œä¸šï¼Œå¹¶æ¶‰å�Šåˆ°åˆ†æ•°è®¡ç®—问题。 æˆ–è€…ä½ å�¯èƒ½éœ€è¦�写代ç �åŽ»è®¡ç®—åœ¨ä½ çš„æœ¨å·¥å·¥åŽ‚ä¸çš„æµ‹é‡�值。
解决方案¶
fractions 模å�—å�¯ä»¥è¢«ç”¨æ�¥æ‰§è¡ŒåŒ…å�«åˆ†æ•°çš„æ•°å¦è¿�算。比如:
>>> from fractions import Fraction
>>> a = Fraction(5, 4)
>>> b = Fraction(7, 16)
>>> print(a + b)
27/16
>>> print(a * b)
35/64
>>> # Getting numerator/denominator
>>> c = a * b
>>> c.numerator
35
>>> c.denominator
64
>>> # Converting to a float
>>> float(c)
0.546875
>>> # Limiting the denominator of a value
>>> print(c.limit_denominator(8))
4/7
>>> # Converting a float to a fraction
>>> x = 3.75
>>> y = Fraction(*x.as_integer_ratio())
>>> y
Fraction(15, 4)
>>>
讨论¶
在大多数程åº�ä¸ä¸€èˆ¬ä¸�会出现分数的计算问题,但是有时候还是需è¦�用到的。 比如,在一个å…�许接å�—分数形å¼�的测试å�•ä½�并以分数形å¼�执行è¿�算的程åº�ä¸ï¼Œ 直接使用分数å�¯ä»¥å‡�少手动转æ�¢ä¸ºå°�数或浮点数的工作。