python如何进行分数计算

推荐使用 fractions.Fraction 类进行精确分数计算:支持整数/字符串初始化(避免浮点数)、四则运算自动约简、混合类型运算及分子分母提取,如 Fraction(1,2)+Fraction(2,3)-Fraction(1,6) 得 Fraction(4,3)。

Python 中进行分数计算,推荐使用标准库中的 fractions.Fraction 类。它能精确表示和运算分数(有理数),避免浮点数误差,适合数学计算、教学演示或需要精确结果的场景。

创建分数对象

可以通过整数、字符串或浮点数(不推荐用浮点数初始化,易引入精度问题)构造 Fraction

  • Fraction(3, 4) → 表示 3/4
  • Fraction('5/6') → 从字符串解析,安全且推荐
  • Fraction(0.75) → 虽可运行,但 0.75 是浮点近似值,可能意外变成 Fraction(3/4) 或更复杂形式;建议优先用字符串或整数对
  • Fraction(2) → 等价于 Fraction(2, 1),即整数自动转为分母为 1 的分数

基本四则运算

支持 +、−、×、÷ 运算符,结果仍为最简分数:

  • Fraction(1, 2) + Fraction(1, 3)Fraction(5, 6)
  • Fraction(3, 4) * Fraction(2, 5)Fraction(3, 10)
  • Fraction(7, 8) / Fraction(1, 4)Fraction(7, 2)
  • 支持混合类型运算,如 Fraction(1, 2) + 1Fraction(3, 2)(整数自动转为分数)

获取与转换信息

方便提取数值成分或转为其他类型:

  • f = Fraction(17, 4)f.numerator 是 17,f.denominator 是 4
  • float(f) → 转为浮点数(仅用于显示或兼容,会丢失精度)
  • str(f) → 返回字符串形式,如 '17/4';若为带分数,需自行格式化(如 f // 1 取整数部分,f % 1 取真分数部分)
  • f.limit_denominator(max_denominator=100) → 将近似浮点数转为“最接近的、分母不超过指定值”的分数(常用于将小数还原为常用分数)

实际小例子:解一道分数题

计算:1/2 + 2/3 − 1/6

from fractions import Fraction
result = Fraction(1, 2) + Fraction(2, 3) - Fraction(1, 6)
print(result)  # 输出:Fraction(4, 3)
print(float(result))  # 可选:1.333...

结果自动约分为最简形式 4/3,全程无精度损失。