Python整数类型(int)、小数/浮点数(float)、复数类型(complex)
1. Python整数类型(int)详解
- 整数就是没有小数部分的数字,Python 中的整数包括正整数、0 和负整数。
- 有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同的类型。例如
C语言
提供了short、int、long、long long
四种类型的整数,它们的长度依次递增,初学者在选择整数类型时往往比较迷惑,有时候还会导致数值溢出。 - 而 Python 则不同,它的整数不分类型,或者说它只有一种类型的整数。
Python 整数的取值范围是无限的,不管多大或者多小的数字,Python 都能轻松处理
。
当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。
请看下面的代码:
运行结果:
- x 是一个极大的数字,y 是一个很小的数字,Python 都能正确输出,不会发生溢出,这说明 Python 对整数的处理能力非常强大。
- 不管对于多大或者多小的整数,Python 只用一种类型存储,就是 int。
关于 Python 2.x
Python 3.x 只用 int 一种类型存储整数,但是 Python 2.x 会使用 long 类型来存储较大的整数。以上代码在
Python 2.x 下的运行结果为:
78
<type 'int'>
8888888888888888888888
<type 'long'>
-7777777777777777777777
<type 'long'>
- 1
- 2
- 3
- 4
- 5
- 6
但是不管哪个版本的 Python,都能轻松处理极大和极小的数字,而且程序员也不用操心底层到底使用了 int 还是 long 类型。
整数的不同进制
- 在 Python 中,可以使用多种进制来表示整数:
1) 十进制形式
-
我们平时常见的整数就是十进制形式,它由 0~9 共十个数字排列组合而成。
-
注意,使用十进制形式的整数不能以 0 作为开头,除非这个数值本身就是 0。
2) 二进制形式
- 由 0 和 1 两个数字组成,书写时以0b或0B开头。例如,101 对应十进制数是 5。
3) 八进制形式
-
八进制整数由 0~7 共八个数字组成,以0o或0O开头。注意,第一个符号是数字 0,第二个符号是大写或小写的字母 O。
-
在 Python 2.x 中,八进制数字还可以直接以0(数字零)开头。
4) 十六进制形式
- 由 0~9 十个数字以及 A~F(或 a~f)六个字母组成,书写时以0x或0X开头,
如果你对不同进制以及它们之间的转换方法不了解,请猛击下面的链接:
进制详解:二进制、八进制和十六进制
进制转换:二进制、八进制、十六进制、十进制之间的转换
【实例】不同进制整数在 Python 中的使用:
运行结果:
本例的输出结果都是十进制整数。
数字分隔符
- 为了提高数字的的可读性,Python 3.x 允许使用下划线_作为数字(包括整数和小数)的分隔符。通常每隔三个数字添加一个下划线,类似于英文数字中的逗号。下划线不会影响数字本身的值。
【实例】使用下划线书写数字:
运行结果:
2. Python小数/浮点数(float)详解
- 在编程语言中,小数通常以浮点数的形式存储。浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。
- Python 中的小数有两种书写形式:
1. 十进制形式
-
这种就是我们平时看到的小数形式,例如 34.6、346.0、0.346。
-
书写小数时必须包含一个小数点,否则会被 Python 当作整数处理。
2. 指数形式
Python 小数的指数形式的写法为:
aEn 或 aen
- a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。
指数形式的小数举例:
- 2.1E5 = 2.1×105,其中 2.1 是尾数,5 是指数。
- 3.7E-2 = 3.7×10-2,其中 3.7 是尾数,-2 是指数。
- 0.5E7 = 0.5×107,其中 0.5 是尾数,7 是指数。
注意,只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 14E3 等价于 14000,但 14E3 是一个小数。
Python 只有一种小数类型,就是 float
。C语言有两种小数类型,分别是 float 和 double:float
能容纳的小数范围比较小,double 能容纳的小数范围比较大。
【实例】小数在 Python 中的使用:
运行结果:
从运行结果可以看出,Python 能容纳极小和极大的浮点数。print 在输出浮点数时,会根据浮点数的长度和大小适当的舍去一部分数字,或者采用
科学计数法
。f5 的值是 120000,但是它依然是小数类型,而不是整数类型。
让人奇怪的是
f6,12.3*0.1
的计算结果很明显是1.23
,但是 print 的输出却不精确。这是因为小数在内存中是以二进制形式存储的,小数点后面的部分在转换成二进制时很有可能是一串无限循环的数字,无论如何都不能精确表示,所以小数的计算结果一般都是不精确的。
有兴趣的读者请猛击下面的链接深入学习:
- 进制转换:二进制、八进制、十六进制、十进制之间的转换
- 小数在内存中是如何存储的?
3. 复数类型(complex)详解
- 复数(Complex) 是 Python 的内置类型,直接书写即可。换句话说,Python 语言本身就支持复数,而不依赖于标准库或者第三方库。
- 复数由实部
(real)
和虚部(imag)
构成,在 Python 中,复数的虚部以j或者J作为后缀,具体格式为:
a + bj
- 1
a 表示实部,b 表示虚部。
【实例】Python 复数的使用:
运行结果:
可以发现,复数在 Python 内部的类型是 complex,
Python 默认支持对复数的简单计算
。