☰ 目录

Python 支持三种核心数字类型:整数浮点数复数。数字类型具有不可变性,运算时自动类型转换。

一、数字类型分类

类型表示法示例特点
整数 (int)十进制
二进制(0b)
八进制(0o)
十六进制(0x)
42
0b1010 (10)
0o52 (42)
0x2A (42)
任意大整数
无大小限制
浮点数 (float)小数形式
科学计数法
3.14
2.5e-3 (0.0025)
双精度浮点数
可能存在精度误差
复数 (complex)a + bj3 + 4j
complex(2, -1) (2 - 1j)
实部+虚部
j为虚数单位

布尔值 (bool) 是整数子类:
True == 1, False == 0


二、基本数值运算

运算符描述示例结果
+加法5 + 3.28.2
-减法10 - 46
*乘法7 * 214
/真除法10 / 33.333...
//整除10 // 33
%取模10 % 31
**幂运算2 ** 8256
@矩阵乘numpy专用-

三、高级数值操作

1. 类型转换

int(3.99)   # 3 (截断小数)
float(8)    # 8.0
complex(5)  # (5+0j)

2. 比较运算

# 链式比较
x = 5
1 < x <= 10  # True

# 浮点数相等判断 (避免直接比较)
abs(0.1 + 0.2 - 0.3) < 1e-9  # True

3. 位运算 (仅整数)

bin(0b1010 & 0b1100)  # '0b1000' (AND)
bin(0b1010 | 0b1100)  # '0b1110' (OR)
bin(0b1010 ^ 0b1100)  # '0b0110' (XOR)
bin(~0b1010)          # '-0b1011' (NOT)
bin(0b1010 << 2)      # '0b101000' (左移)
bin(0b1010 >> 1)      # '0b101' (右移)

4. 分数表示

from fractions import Fraction
Fraction(3, 4)  # 3/4 (避免浮点误差)
Fraction(0.25)  # 1/4

四、数学模块 (math)

import math

# 常用函数
math.sqrt(25)      # 5.0 (平方根)
math.pow(2, 3)     # 8.0 (幂运算)
math.log(100, 10)  # 2.0 (对数)
math.exp(1)        # ~2.718 (e的幂)

# 三角函数 (弧度制)
math.sin(math.pi/2)  # 1.0
math.degrees(math.pi)  # 180.0 (弧度转角度)

# 常数
math.pi    # π ≈ 3.141592653589793
math.e     # 自然常数 ≈ 2.718281828459045
math.tau   # 2π ≈ 6.283185307179586

# 特殊函数
math.gcd(48, 18)      # 6 (最大公约数)
math.comb(5, 2)       # 10 (组合数)
math.perm(5, 2)       # 20 (排列数)
math.isclose(0.1+0.2, 0.3)  # True (浮点数近似比较)

 

五、复数模块 (cmath)

import cmath

z = 3 + 4j
cmath.phase(z)    # 0.927295 (相位角/弧度)
cmath.polar(z)    # (5.0, 0.927295) (极坐标)
abs(z)            # 5.0 (模长)
cmath.exp(z)      # e^z
cmath.sqrt(-1)    # 1j (复数平方根)

 

六、高精度计算 (decimal)

解决浮点数精度问题:

from decimal import Decimal, getcontext

# 设置精度
getcontext().prec = 6  # 6位有效数字

Decimal('0.1') + Decimal('0.2')  # Decimal('0.3') (精确计算)
Decimal(0.1) + Decimal(0.2)      # 0.300000000000000016... (错误用法)

七、随机数模块 (random)

import random

random.random()          # [0,1) 随机浮点数
random.uniform(1.5, 2.5) # 指定范围浮点数
random.randint(1, 10)    # [1,10] 随机整数
random.choice(['A','B','C'])  # 随机选择元素
random.sample(range(100), 5)  # 随机抽样5个

八、数值技巧与陷阱

技巧:

# 千分位分隔符 (Python 3.6+)
num = 10_000_000  # 更易读

# 交换变量
a, b = b, a

# 海象运算符 (Python 3.8+)
if (n := len(data)) > 10:
    print(f"数据过大: {n}项")

陷阱:

# 1. 浮点数精度问题
0.1 + 0.2 == 0.3   # False

# 2. 整数除法 vs 浮点除法
10 / 3   # 3.333... (浮点)
10 // 3  # 3 (整除)

# 3. 类型转换截断
int("3.14")   # ValueError
int(float("3.14"))  # 3 (先转浮点)

# 4. 复数运算限制
(2 + 3j) // 4  # TypeError (复数不支持整除)

九、类型检查与判断

type(5) is int           # True
isinstance(3.14, float)  # True

# 检查是否数字类型
def is_number(x):
    return isinstance(x, (int, float, complex))

十、进制转换

bin(42)     # '0b101010' (十进制→二进制)
oct(42)     # '0o52'     (十进制→八进制)
hex(42)     # '0x2a'     (十进制→十六进制)

# 其他进制转十进制
int('1010', 2)   # 10 (二进制→十进制)
int('2A', 16)    # 42 (十六进制→十进制)

意见反馈

AI助手

代码编辑器