Python标准库fractions中Fraction类可以帮助我们处理分数。

1. 导入

from fractions import Fraction

2. 实例化

Fraction类有多种实例化方法:

1.传入分子和分母

>>> Fraction(4, 3)

Fraction(4, 3)

2.传入浮点数

>>> Fraction(3.5)

Fraction(7, 2)

3.传入字符串

>>>Fraction('5/6')

Fraction(5, 6)

4. 用另一个Fraction示例进行初始化

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

Fraction(1, 2)

5. 或者使用一个Decimal实例

>>> from decimal importDecimal>>> x = Decimal("1.1")>>> y =Fraction(x)>>>y

Fraction(11, 10)

3. 特性

1. 自动约分

Fraction类能够自动对分子和分母进行约分,当分子分母中有负号时,自动约分并最终将负号归于分子

>>>Fraction(10, -5)

Fraction(-2, 1)

2. 二元运算:

1) 加法 +

i)两个分数相加得到一个分数:

>>> Fraction(1,3) + Fraction(1,6)

Fraction(1, 2)

ii)一个分数加一个整数得到一个分数:

>>> Fraction(1,2) + 1Fraction(3, 2)

iii)一个分数加一个浮点数得到一个浮点数:

>>> Fraction(1,2) + 1.6

2.1

2) 减法 - 、乘法 * 、除法 / 同加法

>>> Fraction(3,2) - Fraction(1,2) #分数减法

Fraction(1, 1)>>> Fraction(3,2) - 1Fraction(1, 2)>>> Fraction(3,2) - 0.5

1.0

>>> Fraction(1,2) * Fraction(1,3) #分数乘法

Fraction(1, 6)>>> Fraction(1,2) * 3Fraction(3, 2)>>> Fraction(1,2) * 0.5

0.25

>>> Fraction(3,2) / Fraction(3,1) #分数除法

Fraction(1, 2)>>> Fraction(3,2) / 3Fraction(1, 2)>>> Fraction(3,2) / 3.0

0.5

3) 乘方 ** :

>>> Fraction(1,4)**Fraction(1,2)0.5

>>> Fraction(1,4)**2Fraction(1, 16)>>> Fraction(1,4)**0.5

0.5

>>> 0.25**Fraction(1,2)0.5

>>> 4**Fraction(1,2)2.0

我们发现,乘方运算含有Fraction对象时,若Fraction对象位于指数位,则结果返回一个浮点数;当Fraction对象位于底数位时,只有指数是整数时,返回结果才是一个Fraction对象,否则返回结果都是浮点数。

4) 合理计算

我们知道浮点数有精度要求,是因为浮点数有舍入误差,如:

>>> Fraction(1.1)

Fraction(2476979795053773, 2251799813685248)>>> Fraction("1.1")

Fraction(11, 10)

上述代码中,由str对象实例化可以得到精确表示,但是由浮点数表示不能得到精确表示,这是由浮点数的特性决定的。实际上我们可以使用Fraction对象的limit_denominator()方法得到一个近似的Fraction值。

>>> f = Fraction(1.1)>>>f

Fraction(2476979795053773, 2251799813685248)>>>f.limit_denominator()

Fraction(11, 10)

4. 获取Fraction对象属性

.numerator:获取分子

.denominator:获取分母

>>> f = Fraction(1,2)>>>f.numerator1

>>>f.denominator2

5. .__str__()和.__repr__()方法:

Fraction对象作为一个字符串,使用print()函数打印整个分数:

>>> f = Fraction(1,2)>>> print(f)1/2

>>> f.__str__()'1/2'

>>>str(f)'1/2'

>>> f.__repr__()'Fraction(1, 2)'

>>>repr(f)'Fraction(1, 2)'

6.gcd:求最大公约数函数

>>> importfractions>>> fractions.gcd(2,4)2

python分数类_Python——处理分数类Fraction相关推荐

  1. python类_Python中的类

    Python和Java都是面向对象的语言,对象从类中获取,类指的是同一类具有相同特征的事物,比如拉布拉多,柯基,哈士奇,它们都是狗,具有狗的相同特征,所以可以被归为一类Dog,Python中类的使用与 ...

  2. python内置属性类_Python内置类属性,元类研究

    Python内置类属性 我觉得一切都是对象,对象和元类对象,类对象其实都是一样的,我在最后进行了证明,但是只能证明一半,最后由于元类的父类是type,他可以阻挡对object属性的访问,告终 __di ...

  3. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  4. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...

  5. python如何定义类_Python class定义类,Python类的定义(入门必读)

    在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体.从这个意 ...

  6. python经典类新式类_Python的新式类和经典类

    1. 前言 python在2.2版本中引入了descriptor功能,也正是基于这个功能实现了新式类(new-styel class)的对象模型, 同时解决了之前版本中经典类(classic clas ...

  7. python如何定义类_python中定义类

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 类的定义python中,定义类是通过class关键字,例如我们定义一个存储学生信 ...

  8. python class类_Python——入门级(class类)

    class 定义一个类 class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如Calculator. class可以先定义自己的属性,比如该属性的名称可以写为 name='Good Ca ...

  9. python的类方法_python 如何调用类的方法

    展开全部 使用方法e68a84e8a2ad62616964757a686964616f31333335336530:class A(object): def foo(self,x): #类实例方法 p ...

  10. python3新式类_Python中新式类与经典类的区别详析

    1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于"新式类",都会获得所有"新式类"的 ...

最新文章

  1. js query复习
  2. 解决:angularjs radio默认选中失效问题
  3. spring中实现自己的初始化逻辑
  4. MFC获取系统当前时间
  5. QT乱码总结0.Qt乱码产生因素
  6. 软件体系结构设计文档_一个java架构师是如何设计出一个好的架构的
  7. 第十一届 蓝桥杯 单片机设计与开发项目 省赛 程序设计试题及源码
  8. TensorFlow的Debugger调试实例
  9. windows封装/备份恢复/双系统安装
  10. mysql序列号生成_超详细的mysql数据库GTID介绍—概念、优缺点、原理、生命周期等
  11. python自学记录 pydev安装
  12. 链路负载需求及基本原理
  13. asp.net程序中最常用的三十三种编程代码(转自CSDN)
  14. 深入学习华为云IOT云平台与LiteOS轻量级物联网系统
  15. 真空密码字典生成器分享
  16. 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
  17. gain在matlab里什么意思,gain gray是什么意思
  18. 玩烂vue之vue练手项目
  19. 手写简易版Vue源码之数据响应化的实现
  20. FleaPHP 学习笔记2

热门文章

  1. python有像sumif的函数吗_最全的SUMIF函数用法,小白秒变老司机
  2. 模式分解保持函数依赖判断——数据库考试复习
  3. jquery fadein css同时用,如何同时运行jQuery fadeIn()和slideDown()?
  4. sourcesafe.light 开源项目启动
  5. 树莓派4B连接显示器 黑屏、左上角有光标问题
  6. Win7加密访问共享文件夹
  7. python 拆分excel单元格内容_Excel拆分单元格与把一个单元格内容拆分到多个单元格...
  8. IMO2017day1.1
  9. 忠和资本:2021年后市刘国忠行情预测
  10. 什么是promise?