跳到主要内容

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