python的特殊数字类型(无穷大、无穷小等)
float('inf') 表示正无穷
-float('inf') 或 float('-inf') 表示负无穷
其中,inf 均可以写成 Inf
起步
python中整型不用担心溢出,因为python理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。一般使用一个临时变量用于存储最后结果,变量去逐个比较和不断地更新。而这临时变量一般要初始无穷大或者去第一个元素的值。
正无穷大与负无穷大
python中并没有特殊的语法来表示这些值,但是可以通过 float() 来创建它们:
>>> a = float("inf")
>>> b = float("-inf")
>>> a
inf
>>> b
-inf
为了测试这些值的存在,使用 math.isinf() 进行判断:
>>> import math
>>> math.isinf(a)
True
>>> math.isinf(b)
True
无穷大数在执行数学计算的时候会传播
这个就类似于数学中讲述的,无穷大加上一个常数还是无穷大,无穷大与无穷大相等:
>>> a = float('inf')
>>> a + 45
inf
>>> a * 10
inf
>>> 10 / a
0.0
>>> float("inf") == float("inf")
True
无穷大在比较中比任何一个数都要大。
正无穷与负无穷相加的结果是什么
有些操作时未定义的并会返回一个 NaN 结果:
>>> a = float('inf')
>>> a/a
nan
>>> b = float('-inf')
>>> a + b
nan
表示非数字的 NaN
nan 值在所有操作中也会传播,并且不会产生异常:
>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
使用 math.isnan() 可以判断值是否是 NaN:
>>> math.isnan(c)
True
nan 值的任何比较操作都是返回 False :
>>> float("nan") == float("nan")
False
>>> c > 3
False
更安全的类型转换
由于无穷的存在,因此字符串装浮点数就存在的一些例外,并且这个转换过程不会抛出异常。如果程序员们想改变 python 的默认行为,可以使用 fpectl 模块,但是它在标准的Python 构建中并没有被启用,它是平台相关的,并且针对的是专家级程序员。这里提供一个比较简单的转换,就是加一个 isdigit() 判断:
def str2float(ss):
if not ss.isdigit():
raise ValueError
return float(ss)
sss = "inf"
a = str2float(sss)
python的特殊数字类型(无穷大、无穷小等)的更多相关文章
- python中,数字类型计算
说明: 今天在看python数字类型的操作,在此记录下. 操作过程: 1.数字的加减乘除 >>> 2 + 24>>> 4 - 22>>> 2 - ...
- Python数据类型之数字类型
整数 在Python中,整数可以执行 加(+)减(-)乘(*)除(/) 运算. 1 + 2 3 - 2 2 * 3 3 / 2 # 1.5 在控制台,Python直接返回运算结果. Python中也可 ...
- Python数据类型-2 数字类型
数字类型 数字类型是不可变类型.所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象.数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象. 还是要强调一 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之数字类型(number)
Python 数字类型(number)用于存储数值.数据类型是不允许改变的,这就意味着如果改变number数据类型的值,将重新分配内存空间. 1. 一个简单的示例: # 以下实例在变量赋值时数字类 ...
- python数据类型值数字类型
1.bin()函数是将十进制数转换成二进制数 2.oct()函数将十进制数转换成八进制数 3.hex()函数将十进制数转换成十六进制 数 十六进制表示:0-9 a b c d e f 4.数字 ...
- [Python学习笔记] 数字类型及操作
数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X8 ...
- Python学习笔记-数字类型
如何定义一个数字类型 定义var1为一个INT类型,所以在5/3 输出的是 1. var1 = 5 var1=var1/3 print var1 定义var1为一个INT类型,因为var1是INT类型 ...
- Python基础之数字类型内置方法
目录 1. 整型内置方法(int) 2. 浮点型内置方法 3. 常用操作 1. 整型内置方法(int) 用途:年龄,号码,等级等 定义: age = 18 常用操作 # 算数运算.比较运算 age = ...
- Mooc中国大学Python学习笔记--数字类型及操作
整数类型 只需知道整数无限制,pow(),4进制表示形式 与数学中整数的概念一致 --可正可负,没有取值范限制 --pow(x,y)函数:计算x^y,想算多大算多大 -十进制:10 -二进制,以0b或 ...
随机推荐
- (转)Eclipse4.2 Tomcat启动报错 A child container failed during start
Eclipse4.2 Tomcat启动报错 A child container failed during start 2013-5-21 15:02:24 org.apache.catalina. ...
- [ssh]记ssh的几种玩法
得到一台Linux的服务器,我们可以进行以下几种玩法: 先讲一讲几个参数: -f 要求 ssh在执行命令前退至后台.它用于当ssh准备询问口令或密语,但是用户希望它在后台进行.该选项隐含了-n选 ...
- UVaLive 6588 && Gym 100299I (贪心+构造)
题意:给定一个序列,让你经过不超过9的6次方次操作,变成一个有序的,操作只有在一个连续区间,交换前一半和后一半. 析:这是一个构造题,我们可以对第 i 个位置找 i 在哪,假设 i 在pos 位置, ...
- UILabel和UIButton添加下划线
关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的 NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选 ...
- 51nod 1133【贪心】
思路: 按照终点升序,然后遍历一下就好了: #include <bits/stdc++.h> using namespace std; typedef long long LL; cons ...
- 洛谷 P3711 仓鼠的数学题【伯努利数+多项式科技】
有个东西叫伯努利数--一开始直接·用第一类斯特林推到自闭 式子来源:https://www.luogu.org/blog/ShadowassIIXVIIIIV/solution-p3711 https ...
- bzoj 1396: 识别子串【SAM+线段树】
建个SAM,符合要求的串显然是|right|==1的节点多代表的串,设si[i]为right集合大小,p[i]为right最大的r点,这些都可以建出SAM后再parent树上求得 然后对弈si[i]= ...
- bzoj 3573: [Hnoi2014]米特运输【树形dp+瞎搞】
阅读理解题,题意是以1为根的有根树,每个点有点权,求修改最少点权能使每个点的权值等于其所有子节点权值之和并且每个点的所有子节点权值相等的个数 然后就比较简单了,就是有个技巧是数太大,需要对所有操作都取 ...
- 洛谷P3577 [POI2014]TUR-Tourism
给定一个n个点,m条边的无向图,其中你在第i个点建立旅游站点的费用为Ci.在这张图中,任意两点间不存在节点数超过10的简单路径.请找到一种费用最小的建立旅游站点的方案,使得每个点要么建立了旅游站点,要 ...
- 洛谷CF1030F Putting Boxes Together(树状数组)
题意: 现在有n个物品,第i个物品他的位置在a[i],他的重量为w[i].每一个物品移动一步的代价为他的w[i].目前有2种操作: 1. x y 将第x的物品的重量改为y 2.l r 将编号在 [ l ...