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 对象
“点赞有美意,赞赏是鼓励”
热门跟贴