2.1 数字类型 - int, float
Python 中的数字非常类似数学中的数字,但也受限于计算机中的数字表示方法。
数字类型具有以下特征属性:
- 它们是有效的数字字面值,当被传给它们的类构造器时,将会产生具有原数字值的对象。
- 表示形式会在可能的情况下采用
10
进制。 - 开头的零,除小数点前可能存在的单个零之外,将不会被显示。
- 末尾的零,除小数点后可能存在的单个零之外,将不会被显示。
- 正负号仅在当数字为负值时会被显示。
整型 (int)
Python 中可以处理任意大小的整数,仅受限于可用的内存 (包括虚拟内存)。包括正数和负数,在程序中的表示方法和数学的写法一样,例如:1,100,-100,0 等等。
而且除了支持十进制外,还支持二进制、八进制和十六进制的表示法,即我们可以使用二进制、八进制和十六进制来代表整数:
>>> number = 0b100 # 二进制
>>> number
4
>>> number = 0xFF # 十六进制
>>> number
255
>>> number=0o37 # 八进制
>>> number
31
对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在(所有进制)数字中间以 _
分隔,因此,写成 10_000_000_000 和 10000000000 、0b100_101 和 ob100101 是完全一样的。
浮点型 (float)
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法,如2.5e2。
浮点型表示机器级的双精度浮点数。其所接受的取值范围和溢出处理将受制于底层的机器架构 (以及 C 或 Java 实现)。Python 不支持单精度浮点数;支持后者通常的理由是节省处理器和内存消耗,但这点节省相对于在 Python 中使用对象的开销来说太过微不足道,因此没有理由包含两种浮点数而令该语言变得复杂。
复数(complex)
由实数部分和虚数部分构成,可以用a + bj
,或者 complex(a,b)
表示, 复数的实部a和虚部b都是浮点型。
普通编程中几乎用不到复数,一般专业数学计算才用的。
Python 数字的数据类型转换
有时候,我们需要对数据内置的类型进行转换,只需要将数据类型作为函数名即可。
int(x)
将 x 转换为一个整数。int(x, base=10)
可指定原数据的进制(2 ~ 36)。float(x)
将 x 转换到一个浮点数。complex(x)
将 x 转换到一个复数,实数部分为 x,虚数部分为 0。complex(x, y)
将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
示例:
>>> a = 1.9
>>> int(a) # 浮点数转换为整数,丢失小数部分精度
1
>>> int("FF", 16) # 16进制转10进制
255
>>> int('10', 8) # 8进制转10进制
8
>>> int("10", 36) # 36进制转10进制
36
>>> float('10') # 字符串数字转浮点数
10.0
>>> float(10) # 整数转浮点数
10.0