Python 中的“分数”指 fractions.Fraction 类型,用于精确表示有理数以避免浮点精度误差;它自动约分、支持四则运算、区别于 float 和 Decimal,适用数学推导等需精确计算场景。

Python 中的“分数”通常指 fractions.Fraction 类型,用来**精确表示有理数(即两个整数相除的结果)**,避免浮点数运算带来的精度误差。
分数的核心用途:精确有理数计算
浮点数(如 0.1 + 0.2)在计算机中无法精确存储,结果常为 0.30000000000000004;而 Fraction 始终以分子/分母形式保存,全程不引入小数近似。
- 创建方式:
Fraction(1, 3)表示 1/3,Fraction('1/3')或Fraction(0.5)(自动转为最简分数1/2) - 自动约分:
Fraction(6, 8)会立即化为Fraction(3, 4) - 支持四则运算:
Fraction(1, 2) + Fraction(1, 3)得到Fraction(5, 6),结果仍精确
和浮点数、小数的区别
Fraction ≠ float:前者是精确的整数比,后者是二进制近似值;
Fraction ≠ Decimal:Decimal 专为十进制小数设计(适合货币),Fraction 则面向任意有理数(包括 1/7 这类无限循环小数)。
- 例如:
Fraction(1, 7)精确保存为1/7;转成float就丢失精度;Decimal('1') / Decimal('7')虽可设精度,但本质仍是截断近似 - 适用场景:数学推导、概率计算、需要严格相等判断(如
Fraction(1, 2) == Fraction(5, 10)返回True)
实际使用注意点
不是所有输入都能无损转为 Fraction。传入浮点数时,Python 实际转换的是该浮点数的**真实二进制值**,可能出人意料。
前台功能介绍:1、网页首页显示有高级会员推荐,精品推荐,商业机会分类列表,最新供求信息,网站动态,推荐企业,行业动态等;2、商业机会栏目功能有:二级分类,已经带有详细分类的数据库,后台可以更改增加操作,并可以推荐公司,栏目分为分类显示信息,最新的采购、供应、合作和代理信息,搜索时同样按分类,信息,时间,交易类型等搜索;3、展厅展品栏目功能:二级分类,已经带有详细分类的数据库,后台可以更改增加操作,
- 比如:
Fraction(0.1)不等于Fraction(1, 10),因为0.1在内存中本就是近似值(约等于3602879701896397/36028797018963968) - 安全做法:用字符串初始化 ——
Fraction('0.1')或Fraction('1/10'),才能得到预期结果 - 可随时提取分子分母:
f = Fraction(3, 4); f.numerator → 3; f.denominator → 4
它不是 Python 的基础类型,需显式导入:from fractions import Fraction。用对了,就能避开很多“0.1 + 0.2 ≠ 0.3”的困惑。
立即学习“Python免费学习笔记(深入)”;










