1. fractions有理数

Fraction类基于numbers模块中Rational定义的API来实现有理数的数值运算。

1.1 创建Fraction实例

与decimal模块类似,可以采用多种方式创建新值。一种简便的方式是由单独的分子和分母值来创建。
  • import fractions
  • for n, d in [(1, 2), (2, 4), (3, 6)]:
  • f = fractions.Fraction(n, d)
  • print('{}/{} = {}'.format(n, d, f))
计算新值时要保持最小公分母。
创建Fraction的另一中方法是使用<numerator> / <numerator>字符串表示。
  • import fractions
  • for s in ['1/2', '2/4', '3/6']:
  • f = fractions.Fraction(s)
  • print('{} = {}'.format(s, f))
解析这个字符串,以找出分子和分母值。
字符串还可以使用更常用的小数或浮点数记法,即用一个小数点分隔的一系列数字。能够由float()解析而且不表示NaN或无穷大值的所有字符串都被支持。
  • import fractions
  • for s in ['0.5', '1.5', '2.0', '5e-1']:
  • f = fractions.Fraction(s)
  • print('{0:>4} = {1}'.format(s, f))
浮点值表示的分子和分母值会自动计算。
还可以从有理数的其他表示(如float或Decimal)直接创建Fraction实例。
  • import fractions
  • for v in [0.1, 0.5, 1.5, 2.0]:
  • print('{} = {}'.format(v, fractions.Fraction(v)))
不能精确表示的浮点值可能会得到意料外的结果。
使用值的Decimal表示则会给出期望的结果。
  • import decimal
  • import fractions
  • values = [
  • decimal.Decimal('0.1'),
  • decimal.Decimal('0.5'),
  • decimal.Decimal('1.5'),
  • decimal.Decimal('2.0'),
  • for v in values:
  • print('{} = {}'.format(v, fractions.Fraction(v)))
Decimal的内部实现不存在标准浮点数表示的精度误差。

1.2 算术运算

一旦分数被实例化,就可以在数学表达式中使用了。
  • import fractions
  • f1 = fractions.Fraction(1, 2)
  • f2 = fractions.Fraction(3, 4)
  • print('{} + {} = {}'.format(f1, f2, f1 + f2))
  • print('{} - {} = {}'.format(f1, f2, f1 - f2))
  • print('{} * {} = {}'.format(f1, f2, f1 * f2))
  • print('{} / {} = {}'.format(f1, f2, f1 / f2))
分数运算支持所有标准操作符。

1.3 近似值

Fraction有一个有用的特性,即能够将一个浮点数转换为一个近似的有理数值。
  • import fractions
  • import math
  • print('PI       =', math.pi)
  • f_pi = fractions.Fraction(str(math.pi))
  • print('No limit =', f_pi)
  • for i in [1, 6, 11, 60, 70, 90, 100]:
  • limited = f_pi.limit_denominator(i)
  • print('{0:8} = {1}'.format(i, limited))
可以通过限制分母大小来控制这个分数的值。

python标准库:fractions有理数相关推荐

  1. [Python标准库]fractions——有理数

    [Python标准库]fractions--有理数         作用:实现了一个类来处理有理数.         Python 版本:2.6 及以后版本         Fraction 类基于 ...

  2. Python 标准库 —— fractions

    数学系学生的福音: 表达分数的概念,也即是精确值,分数自然不是近似: 该数的存在,使得我们不再费力进行分数的运算了: import fractions from fractions import Fr ...

  3. python分数类_利用标准库fractions模块让Python支持分数类型的方法详解

    前言 你可能不需要经常处理分数,但当你需要时,Python的Fraction类会给你很大的帮助.本文将给大家详细介绍关于利用标准库fractions模块让Python支持分数类型的相关内容,分享出来供 ...

  4. Python标准库介绍

    1. 关于Python标准库 众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛 ...

  5. python第三方库排行-140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  6. 140种Python标准库、第三方库和外部工具都有了

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  7. cassandra可视化工具_耗时1个月整理!160种Python标准库、第三方库和外部工具都有了...

    耗时1个月整理!160种Python标准库.第三方库和外部工具都有了 北京尚学堂 2019-12-09 14:59:15 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数 ...

  8. [转载] 140种Python标准库、第三方库和外部工具

    参考链接: Python | 使用openpyxl在Excel文件中进行算术运算 这些库可用于文件读写.网络抓取和解析.数据连接.数清洗转换.数据计算和统计分析.图像和视频处理.音频处理.数据挖掘/机 ...

  9. 【转】140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  10. 吐血整理!140种Python标准库、第三方库和外部工具都有了

    导读:大家好,我是涛哥.Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络 ...

最新文章

  1. php di,PHP-DI中文文档(基于有道翻译,基本是直接拿过来使用,并没有润色)
  2. mysql sock golang_golang thrift 总结一下网络上的一些坑
  3. VS2010 + OpenGL 及 第一个实例
  4. 接口隔离原则_是时候深入学习一下“接口隔离原则”了
  5. 2021阿里巴巴研发效能峰会来啦!
  6. [Qt教程] 第19篇 2D绘图(九)图形视图框架(上)
  7. 普通索引 唯一索引 主键索引 候选索引
  8. Docker 部署clickhouse-server及添加用户配置密码
  9. URAL 1031 Railway Tickets
  10. ppt模板网站哪个好
  11. 瞎聊深度学习——词性标注(jieba词性标注实战:jieba.posseg)
  12. 2020年中国互联网数据中心行业现状及发展趋势分析
  13. 系统架构师论文-论混合软件架构设计
  14. RSA 非对称加密算法简述
  15. sql server 安全配置及建议配置
  16. Windows系统 电脑系统重装详细图文教程(绝对够详细,看这一篇就够)
  17. 如何检测计算机主板的好坏,主机电源怎么测试好坏
  18. php做网站半成品,两小时学会用php做网站购物车
  19. 基于运动学模型的轨迹跟踪控制
  20. CPU频率与内存频率的关系

热门文章

  1. 资深投资人: VC的“增值平台”就是一坨狗屎
  2. [JMeter性能测试实战]之先从搭建测试环境开始
  3. 小米会成为三星没落的因素吗?
  4. UI设计师具备四大维度能力剖析
  5. 在go mod中使用k8s.io/code-generator生成代码
  6. VS2012 msvcr110d.dll xxxxxx处有未经处理的异常:0xC0000005:写入位置xxxxxx时发生访问冲突(scanf_s引起)-已解决
  7. 常用benchmark小结
  8. 解决数据一致性方案(库存问题)
  9. ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置
  10. Coding and Paper Letter(七十五)