首页 / Python3 入门教程 / 数据类型转换与数字

Python3 入门教程

数据类型转换与数字

本教程共 70 篇 · 第 8 篇 · 更新于 2026-07-22 · 约 3 分钟阅读

PythonPython3 入门教程int 类型float 浮点数类型转换浮点数精度

8. 数据类型转换与数字

本节目标:掌握 int、float、complex 的用法,理解类型转换和浮点数精度问题。

整数 int

Python 的整数没有大小限制,可以处理任意大的数:

>>> 10 ** 100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

为了方便阅读大数字,可以用下划线分隔:

>>> population = 1_411_778_724
>>> population
1411778724

整数支持多种进制:

>>> 0b1010     # 二进制,前缀 0b
10
>>> 0o12       # 八进制,前缀 0o
10
>>> 0xA        # 十六进制,前缀 0x
10

浮点数 float

浮点数就是小数,用科学计数法表示时把 ×10 换成 e

>>> 1.23e9     # 1.23 × 10^9
1230000000.0
>>> 1.2e-5     # 1.2 × 10^-5
0.000012
Warning

浮点数运算有精度问题,这是计算机表示小数的固有限制,不是 Python 独有的 bug。

>>> 0.1 + 0.2
0.30000000000000004

需要精确计算时(比如涉及钱),用 decimal 模块:

from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)   # 0.3,精确值
Note

传给 Decimal 的是字符串 '0.1',不是浮点数 0.1。如果传浮点数,精度损失已经发生,救不回来了。

复数 complex

复数由实部和虚部组成,虚部用 j 表示:

>>> c = 3 + 4j
>>> c.real     # 实部
3.0
>>> c.imag     # 虚部
4.0
>>> abs(c)     # 模
5.0

复数在工程、信号处理领域常用,日常开发很少用到。

类型转换函数

Python 提供了内置函数在数字类型之间转换:

>>> int(3.14)      # 浮点转整数,截断小数部分
3
>>> int("42")      # 字符串转整数
42
>>> float(3)       # 整数转浮点
3.0
>>> complex(3, 4)  # 构造复数
(3+4j)
Warning

int() 转换不是四舍五入,是直接截断。int(3.9) 结果是 3。要四舍五入用 round()

>>> round(3.9)
4
>>> round(2.5)   # 偶数优先
2
>>> round(3.5)
4

一些转换会失败:

>>> int("hello")
ValueError: invalid literal for int() with base 10: 'hello'

try/except 可以安全处理(异常处理后面章节会详细讲):

try:
    num = int(input("请输入数字:"))
except ValueError:
    print("输入的不是有效数字")

数字运算

>>> 5 + 4          # 加法
9
>>> 4.3 - 2        # 减法
2.3
>>> 3 * 7          # 乘法
21
>>> 2 / 4          # 真除法,结果总是浮点数
0.5
>>> 2 // 4         # 地板除,取整数部分
0
>>> 17 % 3         # 取余
2
>>> 2 ** 5         # 幂运算
32
>>> divmod(17, 3)  # 同时返回商和余数
(5, 2)
Tip

/// 的区别很重要。/ 永远返回浮点数,哪怕整除:9 / 33.0// 返回整数(或向下取整的浮点数)。

浮点数详解:为什么 0.1 + 0.2 != 0.3

计算机用二进制存储浮点数,而 0.1 转换成二进制是无限循环小数,只能近似存储。这就好比用十进制无法精确表示 1/3(0.3333…)。

如果需要判断两个浮点数是否「相等」,不要直接用 ==,而是看差值是否小于一个很小的数:

import math

a = 0.1 + 0.2
b = 0.3

# 错误做法
print(a == b)        # False

# 正确做法
print(math.isclose(a, b))   # True
Note

math.isclose() 是 Python 3.5 加入的,默认相对容差 rel_tol=1e-09,大部分场景够用。


来源:参考了 runoob「Python3 数字」「Python3 数据类型转换」、liaoxuefeng「数据类型和变量」、pythondoc「浮点算术:问题和限制」、w3cschool「Python3 数字」等,改写后所得。