Python数字类型包括整型(int)、浮点数(float)、复数(complex)、布尔型(bool)四种数值类型。
1、整型
整型几乎是所有编程语言中最基本的一种类型,它的表达方式和正常的书面书写一样,如:
>>> 10
10
常见的整型都是十进制的,但是有的时候为了计算的需要可能要使用到其他进制的整型。Python 3提供了一些用于进制转换的内置函数:bin()、int()、oct()、hex(),分别用来将整型转换为二进制、八进制、十进制、十六进制,如:
>>> print("十进制数:", 10)
十进制数:10
>>> print("二进制数:", bin(10))
二进制数:0b1010
>>> print("八进制数:", oct(10))
八进制数:0o12
>>> print("十六进制数:", hex(10))
十六进制数:0xa
从执行结果可以看出,十进制的整型开头是没有标识符,而二进制、八进制、十六进制整型的标识符分别为:0b、0o、0x。关于各进制之间的相互转换如表所示。
2、浮点数
浮点数为带小数点的实数,如3.14、0.25、-10.26、50.21E12(此处为科学计数法,表示50.21*10^12)等都是浮点数。
Python 3中的浮点数和正常的书写格式基本一致。但是当小数点前面或后面的数为0时,0可以省略。
Python 3中的整型是没有上下限的,而浮点数则不同,它具有上限和下限。当浮点数超出了上限或下限时,会报溢出错误信息。>>> 2 ** 1024 #2的1024次方
>>> 2.0 ** 1024
Traceback (most recent call last):
File "", line 1, in
OverflowError: (34, 'Result too large')
当输入2的1024次方之后,Python反馈了一个“Result too large”错误。提示结果太大,Python不能把它表示出来。
值得注意的是,浮点数在计算机中都是使用二进制存储的,由此不可避免的会带来一定的精度丢失。因此,在使用Python做精确计算的时候,需要先对浮点数进行一定的处理。一种较好的办法就是使用decimal模块来处理浮点数,例如如下的示例:
>>> from decimal import Decimal#导入decimal模块中的Decimal()函数
>>> a=Decimal('0.1')
>>> b=Decimal('0.2')
>>> a+b
Decimal('0.3')
>>> print(a+b)
0.3
上面代码的第一行的功能是导入Python 3内置的decimal模块中的Decimal类,这将在第5章中讲解。第二行和第三行分别将字符串0.1和0.2转换成了Decimal类型,第四行代码可以看到变量a和b相加后的类型仍然为Decimal类型,并且其对应的浮点数结果为0.3,最后一行代码使用print()语句直接输出了浮点数运算的结果。需要注意的是,传入Decimal的参数不能是浮点数,否则误差会仍然存在,因为Python中的浮点数本来就是不精确的。
3、复数
Python 3提供了对复数的支持,其运算方法跟数学中的复数运算基本一致。在Python 3中,规定使用1j来表示-1的平方根,如下所示是Python中1j的四则运算。
>>> 1j + 1j
2j
>>> 1j - 1j
0j
>>> 1j * 1j
(-1+0j)
>>> 1j / 1j
(1+0j)
如果需要获取复数的实数部分可以使用.real,获取虚数部分用.imag,例如如下的示例:
>>> 1j * 1j
(-1+0j)
>>> (1j * 1j).real #实数部分为-1.0
-1.0
>>> (1j * 1j).imag #虚数部分为0.0
0.0
4、布尔型
布尔型是一个十分重要的数据类型,它主要应用在分支,循环结构中。Python 2中是没有布尔型的,它用0表示False,1表示True。而Python 3则将0和1分别定义为了:False和True字段,但是它们仍然可以像整型那样相加,例如如下的示例:
>>> False + True
1
>>> True + True
2
领取专属 10元无门槛券
私享最新 技术干货