python中number函数_python-1:Number数字类型 之三 相关函数 Fraction
fractions模块
fractions模块提供了分数类型的支持。
Fraction类
该类是fractions模块的核心,它继承了numbers.Rational类并且实现了该类所有的方法。
构造函数并不复杂:
class fractions.Fraction(numerator=0, denominator=1)
class fractions.Fraction(int|float|str|Decimal|Fraction)
可以同时提供分子(numerator)和分母(denominator)给构造函数用于实例化Fraction类,但两者必须同时是int类型或者numbers.Rational类型,否则会抛出类型错误。当分母为0,初始化的时候会导致抛出异常ZeroDivisionError。
而如果只提供一个参数,则可以用上述五种类型进行初始化。当使用字符串进行初始化时,fractions模块使用内置的正则表达式进行匹配。而使用浮点数或者Decimal进行初始化时,fractions模块会在内部调用as_integer_ratio()。
下面的代码示例来自官方文档,展示了各种实例化Fraction的方式:
>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t\n')
Fraction(1414213, 1000000)
>>> Fraction('-.125')
Fraction(-1, 8)
>>> Fraction('7e-6')
Fraction(7, 1000000)
>>> Fraction(2.25)
Fraction(9, 4)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)
限制分母
fractions.Fraction.limit_denominator(max_denominator=1000000)
有时候将浮点数或者Decimal作为Fraction实例的初始化数据可能会遇到舍入误差的问题,如上面调用Fraction(1.1)时不返回Fraction(11, 10)的例子。这时Fraction类提供了一个实例方法limit_denominator()用于减小这种误差。这个方法本来是为了通过限制分母来得到一个近似值,但是在出现舍入误差的时候反倒使得结果更加精确了,如下面的例子:
>>> from fractions import Fraction
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> Fraction(1.1).limit_denominator()
Fraction(11, 10)
将Fraction用于算术运算、关系运算和其他多种操作
上面提到,Fraction类继承了numbers.Rational类并且实现了该类所有的方法。所以Fraction类事实上通过重载很多特殊函数,使得其实例可以直接用于多种算术运算。
不仅支持算术运算,Fraction类同时也支持关系运算、pickle模块、copy模块和哈希值的计算。
>>> from fractions import Fraction
>>> x = Fraction(1, 2)
>>> y = Fraction(1, 3)
>>> x + y
Fraction(5, 6)
>>> x - y
Fraction(1, 6)
>>> x * y
Fraction(1, 6)
>>> x / y
Fraction(3, 2)
>>> x ** 2
Fraction(1, 4)
>>> -x
Fraction(-1, 2)
>>> abs(x)
Fraction(1, 2)
>>> round(x)
0
>>> import math
>>> math.floor(x)
0
>>> math.ceil(x)
1
>>> x == y
False
>>> x > y
True
其他函数
fractions.Fraction.from_float(flt)
fractions.Fraction.from_decimal(dec)
在Python3.2之前,Fraction类不支持通过将浮点数和Decimal传入构造方法来获得实例。而是提供了上面两个类方法,通过调用类方法的方式来产生实例,目前版本(Python 3.6.1)这两个类方法仍然存在。
fractions.gcd(a, b)
用于计算最大公约数。这个函数在Python3.5之后就废弃了,官方建议使用math.gcd()。
python中number函数_python-1:Number数字类型 之三 相关函数 Fraction相关推荐
- python中input()函数的返回是什么类型_Python中input函数的用法是什么?
"input()"函数是输入函数,用于接受一个标准输入数据,且返回string类型.在Python3中,去除了"raw_input()"函数,仅保留了" ...
- python中choice函数_Python中choice函数的实现方法
Python中choice函数的实现方法 发布时间:2020-12-15 09:28:06 来源:亿速云 阅读:82 作者:小新 这篇文章主要介绍Python中choice函数的实现方法,文中介绍的非 ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- python中factor函数_Python入门-函数
函数 在维基百科上函数式这样描述的: 函数在数学中为两集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素. 此处的函数区别于我们数学上的函数,在编程世界中,函数(Funct ...
- python中mat函数_Python中flatten( )函数及函数用法详解
flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...
- python中set函数_python中set()函数简介及实例解析
set函数也是python内置函数的其中一个,属于比较基础的函数.其具体介绍和使用方法,下面进行介绍. set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并 ...
- python中property函数_python 邮件表格Python中property函数用法实例分析
本文实例讲述了Python中property函数用法.分享给大家供大家参考,具体如下: 通常我们在访问和赋值属性的时候,都是在直接和类(实例的)的__dict__打交道,或者跟数据描述符等在打交道.但 ...
- python中help函数_Python help()函数
python中help函数 Python help() function is used to get the documentation of specified module, class, fu ...
- python中exp函数_python中exp函数如何实现指数计算?
原标题:python中exp函数如何实现指数计算? 之前小编向大家介绍过python中的对数函数log函数(https://www.py.cn/jishu/jichu/21780.html),对于有点 ...
最新文章
- 基于Flink SQL构建流批一体实时数仓
- 位操作符:位与、|位或、^异或、~求反、左移位、带符号右移位、无符号右移位...
- 一个网卡下设置两个ip地址
- Angular里遇到的一个依赖注入问题以及解决办法
- win7下 apache2.2 +php5.4 环境搭建
- php 反射对象属性,php面向对象之反射功能的用法详解
- 虚拟化服务器的管理与维,服务器虚拟化管理
- springcloud使用restTemplate进行服务调用
- 特斯拉计划在2023年推出2.5万美元电动汽车,或无方向盘
- std::thread
- 汽车品牌查询及车型大全查询
- 电吉他效果器音频处理(1)——失真效果器、超载失真效果器、移相效果器、弗兰格效果器
- python程序文件的扩展名是-python脚本文件的扩展名是什么
- 教师评计算机课缺点及建议,评课用语优缺点及建议
- 使用DBeaver连接mysql报Access denied for user ‘test‘@‘%‘ to database
- C语言——宏定义及保留n位小数
- WT588E语音芯片+数码管的应用场景介绍
- 江湖中常说的“网格交易法”到底是什么?
- 一年之计在于春,一日之计在于晨,劲爆
- autojs学习笔记
热门文章
- 2022天梯L1-L2题解
- (亲测可行)charles抓包夜神模拟器保姆级教程
- PhpStudy在nginx下配置虚拟主机和伪静态
- 【刷题】洛谷 P2675 《瞿葩的数字游戏》T3-三角圣地
- 风格迁移1-00:Liquid Warping GAN(Impersonator)-目录-史上最新无死角讲解
- np.power与np.linalg.inv
- 07.图6 旅游规划 [Dijkstra 算法]
- Java Swing写简单计算器以及拓展贷款计算器(等额本息和等额本金计算可以单独拿出来用)
- redis的zset为什么用跳表不用红黑树
- 高等数学——求解不定积分的经典换元法