============================ 3.8 分数è¿ç®— ============================ ---------- 问题 ---------- ä½ è¿›å…¥æ—¶é—´æœºå™¨ï¼Œçªç„¶å‘çŽ°ä½ æ£åœ¨åšå°å¦å®¶åºä½œä¸šï¼Œå¹¶æ¶‰åŠåˆ°åˆ†æ•°è®¡ç®—问题。 æˆ–è€…ä½ å¯èƒ½éœ€è¦å†™ä»£ç åŽ»è®¡ç®—åœ¨ä½ çš„æœ¨å·¥å·¥åŽ‚ä¸çš„æµ‹é‡å€¼ã€‚ ---------- 解决方案 ---------- ``fractions`` 模å—å¯ä»¥è¢«ç”¨æ¥æ‰§è¡ŒåŒ…å«åˆ†æ•°çš„æ•°å¦è¿ç®—。比如: .. code-block:: python >>> 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) >>> ---------- 讨论 ---------- 在大多数程åºä¸ä¸€èˆ¬ä¸ä¼šå‡ºçŽ°åˆ†æ•°çš„è®¡ç®—é—®é¢˜ï¼Œä½†æ˜¯æœ‰æ—¶å€™è¿˜æ˜¯éœ€è¦ç”¨åˆ°çš„。 比如,在一个å…许接å—分数形å¼çš„æµ‹è¯•å•ä½å¹¶ä»¥åˆ†æ•°å½¢å¼æ‰§è¡Œè¿ç®—的程åºä¸ï¼Œ 直接使用分数å¯ä»¥å‡å°‘手动转æ¢ä¸ºå°æ•°æˆ–浮点数的工作。