每天学点Python之数值类型
2015-12-20 17:12
651 查看
每天学点Python之数值类型
Python中的数值类型包括int、float和complex三种类型。注:以下内容只针对Python3
int
Python中的int类型是无限精度的,这个特性给编程带来了很多便利。float
Python中的float底层是用c语言中double类型变量实现的,具体的精度与运行的计算机有关。可以通过变量sys.float_info查看,如我的计算机上的值:
>>> print(sys.float_info) sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
complex
Python是支持虚数运算的,虚数的表示法为z=a+bj,其中a和b是float类型的数字。如果要单独获取a用z.real,单独获取b用z.imag。混合运算
Python支持不同数值类型之间的运算,所有与complex型数值运算的结果都是complex,int型与float型运算结果为float型。如果需要对数值进行转型(可以从字符串转化),可以用int(),float()和complex()函数。int还支持将其他进制的字符串数值转为十进制:>>> int("0213",8) 139 >>> int("0xa231",16) 41521
注:float()函数还支持nan,+inf,-inf作为参数,分别表示不是一个数字、正无穷和负无穷。
运算符
Python支持一般的加减乘除运算,需要注意的是除法运算返回的结果是float型的,即2/1=2.0。如果需要返回的是int型数值,需要使用
//符号,这个符号相当于先做除法,再做floor()运算。以下再罗列一下特殊的运算符和函数:
conjugate
这是一个针对虚数的方法,用来求虚数的共轭虚数:
>>> (1+2j).conjugate() (1-2j)
divmod
这个函数用来返回两个数的商和余数:
>>> divmod(7,3) (2, 1)
pow
pow是用来求x的y次方的,在Python中还可以用**来实现相同的功能:
>>> pow(2,3) 8 >>> 2**3 8
注:在Python中0**0=1,只为了方便编写程序
abs
abs用来表示绝对值,但如果用在虚数上,则可以对虚数求模,获得一个float型的数值:
>>> abs(3-2j) 3.6055512754639896
数值精度
下面介绍Python用于数值精度方面的常用函数:math.trunc(x)
保留x的整数部分,忽略小数点后的数。
round(x[,n])
对x进行四舍五入,保留n位小数。
math.floor(x)
小于等于x的最大整数。
math.ceil(x)
大于等于x的最小整数。
注:很多人会问trunc和floor的区别,其实对于正数,它们没什么区别,但对于负数请看:
>>> math.trunc(-2.9) -2 >>> math.floor(-2.9) -3
位移操作
针对int型的操作,没有什么特殊的,或操作(|)、异或操作(^)、且操作(&)、左移操作(<<)、右移操作(>>)、取反操作(~)。说到位操作Python中有bin()函数可以将数字转为二进制。同时可以用int.bit_length()方法来获取二进制的长度:
>>> n = 16 >>> n.bit_length() 5 >>> bin(n) '0b10000'
float方法探究
下面罗列一下float中额外的一些方法:float.as_integer_ratio()
将一个float用分数表示出来,返回的是一个二元元组。
float.is_integer()
判断一个float型数字是否是整数,返回布尔值。
十六进制
float与十六进制的转换是通过float.hex()和float.fromhex(s)实现的,具体看如下代码:
>>> float.hex(163.2) '0x1.4666666666666p+7' >>> float.fromhex('0x1.4666666666666p+7') 163.2
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- 关于PHP浮点数你应该知道的(All 'bogus' about the float in PHP)
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例