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 等函数,日常数字处理已够用。