在日常编程中,我们经常需要处理小数或分数。然而,浮点数由于其二进制表示方式,常常存在精度问题。例如,0.1 + 0.2 != 0.3 在计算机中可能返回 False。为了解决这一问题,Python 提供了内置的 fractions 库,专门用于精确地表示和操作分数。

Python 的 fractions 模块是标准库的一部分,无需额外安装。它提供了一个 Fraction 类,可以精确地表示有理数(即两个整数的比值),避免了浮点数的舍入误差。这使得它在金融计算、科学计算或任何需要高精度数值处理的场景中非常有用。
核心优势包括:
创建 Fraction 对象有多种方式,下面逐一介绍:
from fractions import Fraction# 创建 3/4f1 = Fraction(3, 4)print(f1) # 输出: 3/4# 自动约分f2 = Fraction(6, 8)print(f2) # 输出: 3/4f3 = Fraction('3/4')print(f3) # 输出: 3/4f4 = Fraction('0.75')print(f4) # 输出: 3/4虽然可以传入浮点数,但由于浮点数本身的精度限制,结果可能不符合预期。建议优先使用字符串形式。
# 不推荐f5 = Fraction(0.1)print(f5) # 输出: 3602879701896397/36028797018963968# 推荐:用字符串代替f6 = Fraction('0.1')print(f6) # 输出: 1/10Fraction 对象支持所有常见的数学运算,并且结果仍然是 Fraction 类型,保持精确性。
from fractions import Fractiona = Fraction(1, 3)b = Fraction(1, 6)print(a + b) # 1/3 + 1/6 = 1/2print(a - b) # 1/3 - 1/6 = 1/6print(a * b) # 1/3 * 1/6 = 1/18print(a / b) # 1/3 ÷ 1/6 = 2# 与整数运算print(a + 2) # 1/3 + 2 = 7/3f = Fraction(14, 21)print(f.numerator) # 2print(f.denominator) # 3f = Fraction(3, 4)print(float(f)) # 0.75print(str(f)) # '3/4'有时我们需要将一个浮点数近似为最接近的简单分数,可以使用 limit_denominator() 方法:
from fractions import Fractionimport mathpi_approx = Fraction(math.pi).limit_denominator(1000)print(pi_approx) # 355/113print(float(pi_approx)) # 3.1415929203539825通过本文,你已经掌握了 Python 中 fractions 库 的基本用法。无论是进行 分数计算、避免浮点误差,还是实现 精确分数处理,Fraction 类都是一个强大而可靠的工具。对于初学者来说,只要记住“用字符串创建分数更安全”这一原则,就能有效利用该库提升程序的数值精度。
希望这篇关于 Python分数运算 的教程对你有所帮助!快去试试吧~
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124780.html