fractions 是 Python 自带的分数处理模块,用于进行准确的有理数运算。它避免了浮点数的舍入误差,特别适合处理精度要求高的场合,如财务计算、精密科学、代数推理等。

常见应用场景:

(1)将浮点数或小数转换为有理数表示。

(2)分数之间的加减乘除与比较。

(3)精确表示无法准确用 float 表示的值(如 1/3)。

(4)数学表达式求值,返回分数结果。

◆ ◆

核心概念

1、模块核心类为 Fraction,用于表示有理数(即两个整数之比)。

2、Fraction(a, b) 表示 a/b,会自动约分为最简形式。

3、Fraction 支持整数、浮点数、字符串、Decimal 构造。

4、所有基本运算(+ - * / // % **)均返回精确的 Fraction 结果。

5、与 float 混用时,结果会自动转换为 float。

6、分数对象具备分子 (.numerator) 与分母 (.denominator) 属性。

7、fractions 不支持复数,仅用于实数域的有理表示。

◆ ◆

应用举例

例 1:构造一个分数对象

from fractions import Fraction

f = Fraction(3, 4)
print(f)  # 输出:3/4

例 2:分数自动约分

from fractions import Fraction

f = Fraction(10, 20)
print(f)  # 输出:1/2(自动约分)

例 3:用字符串或 float 构造

from fractions import Fraction

f1 = Fraction('0.25')  # 推荐,精确
f2 = Fraction(0.25)    # 有精度误差
print(f1)  # 1/4
print(f2)  # 1/4(但构造过程有隐患)

例 4:分数加减乘除

from fractions import Fraction

a = Fraction(2, 3)
b = Fraction(3, 4)

print("加法:", a + b)  # 17/12
print("乘法:", a * b)  # 1/2

例 5:提取分子与分母

from fractions import Fraction

f = Fraction(7, 9)
print("分子:", f.numerator)    # 7
print("分母:", f.denominator)  # 9

◆ ◆

常用函数速览

fractions.Fraction(numerator=0, denominator=1)

构造一个最简分数对象,表示 numerator/denominator。

参数

numerator:分子,可为整数、字符串、浮点数、Decimal 等

denominator:分母,必须为整数,默认为 1

若仅传入一个字符串,如 '2/3',则自动解析为分数

返回:一个 Fraction 对象(自动约分)

示例:

Fraction(4, 6)       # 2/3
Fraction('1.25')     # 5/4
Fraction('3/5')      # 3/5

.numerator

返回分数的分子(约分后)。

参数:无

返回:整数类型

.denominator

返回分数的分母(约分后)。

参数:无

返回:整数类型

.limit_denominator(max_denominator=1000000)

将当前分数近似为一个最简分数,且分母不超过指定值。

常用于近似 float 的有理数表达。

参数

max_denominator:最大允许的分母值(默认一百万)

返回:一个近似的 Fraction 对象

示例:

Fraction(3.1415926).limit_denominator(100)  # 355/113

.from_float(f)

将浮点数构造为 Fraction,精度可能有限。

参数

f:浮点数

返回:对应 Fraction 对象(精度取决于 float)

.from_decimal(d)

从 decimal.Decimal 构造分数,推荐用于高精度转换。

参数

d:Decimal 类型

返回:Fraction 对象

点赞有美意,赞赏是鼓励