基本数据类型:数字
一、int(整型)
Python中的整数属于int类型,默认用十进制表示,此外也支持二进制,八进制,十六进制表示方式,计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便。
Python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:3,89,-123,等等。
二、long(长整型)python2中有,python3中全部为int整型
python2中,long(长整型)的位数为超过31位,取值范围超过-2**31~2**31-1,即-2147483648~2147483647(直接运算会显示long型,因为2**31会先运算,是long型)
长整数数据后面加字母L,例如:
# python2
>>> (2**30-1)*2+1 2147483647 >>> 2147483647+1 2147483648L >>> -2147483648 -2147483648 >>> -2147483648-1 -2147483649L
python3中全部为int整型,例如:
# python3
>>> 2**100 1267650600228229401496703205376
>>> -2**123
-10633823966279326983230456482242756608
三、float (浮点型)
即小数,是有限小数或无限循环小数。
在运算中,整数与浮点数运算的结果也是一个浮点数。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。
科学计数法:
对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,例如:
>>> a = 0.0000000000058
>>> a
5.8e-12
>>> 666.6e10
6666000000000.0
其中,e-12,就是10**-12; e10,就是10**10。
关于小数不精准问题:
Python默认的是17位精度,也就是小数点后16位,尽管有16位,但是这个精确度却是越往后越不准的。例如:
>>> 10/3 3.3333333333333335
首先,这个问题不是只存在在python中,其他语言也有同样的问题
其次,小数不精准是因为在转换成二进制的过程中会出现无限循环的情况,在约省的时候就会出现偏差。
比如:11.2的小数部分0.2转换为2进制则是无限循环的00110011001100110011...
单精度在存储的时候用23bit来存放这个尾数部分(前面9比特存储指数和符号);同样0.6也是无限循环的。
四、complex(复数)
复数complex是由实数和虚数组成的。例如:
>>> a = (3+5j) >>> b = (3+5J) >>> type(a) <class 'complex'> >>> type(b) <class 'complex'> >>> a == b True
注:工程学里,复数的虚部用 j(大小写都行)表示,和数学里复数的i相同,都是虚数单位(即-1开根)。