Python3 数字 Number

Python 内置四种数字类型:int(整数)、float(浮点数)、complex(复数)以及 bool(布尔)。它们都是不可变对象,运算会生成新值而不是修改原值。

int 整数:可以任意大

与 C/Java 不同,Python 的 int 没有位数上限,可以放心做大数计算:

big = 10 ** 30
print(big)         # 输出:1000000000000000000000000000000
print(2 ** 200)    # 直接算出超长结果,绝不会溢出

float 浮点:精度陷阱

浮点数按二进制存储,很多十进制小数无法精确表示,因此 0.1 + 0.2 的结果并不等于 0.3:

print(0.1 + 0.2)              # 输出:0.30000000000000004
print(round(0.1 + 0.2, 2))    # 输出:0.3,round 可四舍五入
# 金额、计费等要求精确的场景,请改用 decimal 模块

bool:int 的子类

True 与 False 本质就是 1 与 0,因此可以参与整数运算:

print(isinstance(True, int))   # 输出:True
print(True + True)             # 输出:2
print(int(True), int(False))   # 输出:1 0

complex 复数

写作 a+bj,j 是虚数单位,支持四则运算,并可用 real/imag 取实部与虚部:

c = 3 + 4j
print(c.real, c.imag)     # 输出:3.0 4.0
print(c * (1 + 2j))       # 输出:(-5+10j)

不同进制写法

书写字面量时用前缀表示进制:0b 二进制、0o 八进制、0x 十六进制:

print(0b1010)    # 输出:10
print(0o12)      # 输出:10
print(0x1F)      # 输出:31

常用数字函数

abs 绝对值、round 四舍五入、pow 幂、divmod 同时得到商与余数:

print(abs(-5))              # 输出:5
print(round(3.14159, 2))    # 输出:3.14
print(pow(2, 10))           # 输出:1024
print(divmod(17, 5))        # 输出:(3, 2)

还有针对可迭代对象的 max、min、sum:

print(max(3, 7, 2), min(3, 7, 2))   # 输出:7 2
print(sum([1, 2, 3, 4]))            # 输出:10

math 模块

三角函数、对数、开方等更专业的数学函数在 math 模块中(详见"math 模块"篇):

import math
print(math.sqrt(16))     # 输出:4.0,开平方
print(math.floor(3.7))   # 输出:3,向下取整
print(math.pi)           # 输出:3.141592653589793

int 无限大、float 有精度误差、bool 是 int 子类、complex 表示复数;掌握进制前缀与 abs/round/divmod 等函数,日常数字处理已够用。

笔记加载中…