基本数据类型:数字

一、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开根)。

 

posted @ 2019-06-12 17:52  relex  阅读(1497)  评论(0编辑  收藏  举报