Python数据类型-基础数据类型-Number 数字、bool 布尔、complex 复数
2025-8-30
| 2025-8-31
Words 2114Read Time 6 min
type
status
date
slug
summary
tags
category
icon
password

📝 数字类型---int,float,complex

1、内置类型 int

1.1、基本语法

  1. x:要转换为整数的对象(字符串、数字等)。
  1. base:可选参数,表示进制(默认为10),范围是 2 ≤ base ≤ 36。

1.2、构造方法详解

(1) 从整数构造
如果 x 已经是整数,直接返回其值:
(2) 从浮点数构造
截取浮点数的整数部分(向下取整,非四舍五入):
(3) 从字符串构造
字符串可以是十进制或其他进制的数字表示,需符合 base 的规则。
  • 十进制字符串(默认 base=10):
  • 二进制base=2):
  • 八进制base=8):
  • 十六进制base=16):
  • 三十六进制base=36):
前缀自动识别base=0):如果 base=0,字符串的前缀会被自动解析
  • 0b0B → 二进制
  • 0o0O → 八进制
  • 0x0X → 十六进制
  • 无前缀 → 十进制
无效字符串会报错
(4) 从布尔值构造
  • 布尔值 TrueFalse 分别对应 1 和 0:
(5) 从其他类型构造
任何定义了 __int__()__index__() 方法的对象均可被转换:
  • __int__()(旧方法,已不推荐):
  • __index__()(推荐,用于切片、位运算等):

1.3、错误处理

  • 无效输入
  • 超出进制范围

1.4、进制转换

  • int() 转成十进制:int 可以将数字字符串和 Number 类型的值转成整数
  • bin() 其他进制数转二进制
  • oct() 其他进制转成八进制
  • hex() 其他进制转成十六进制

2、内置类型 float

2.1、基本语法

  • 仅有一个位置参数 x,可以是数字、字符串、实现了 \\float\\() 的对象,或干脆不传(返回 0.0)。
  • 没有 base 参数;进制转换只能先转成整数再除以幂次,或借助 decimal / fractions。

2.2、按输入来源分类

(1) 从整数构造
  • 任意大小的 int 都能转换(Python 的 int 是无限精度),但最终会被截断到 53 bit 有效数字。
(2) 从浮点数构造
  • 如果 x 已经是 float,直接返回同一对象(CPython 实现下的 C 级优化)。
(3) 从字符串构造
  • 十进制:支持科学计数法、正负号、前导 / 尾随空格、下划线(PEP 515)
  • 十六进制浮点(PEP 754 / C99 风格):
  • NaN 字符串变体
  • 非法格式ValueError
(4) 从布尔值构造
(5) 从 DecimalFraction 构造
  • decimal.Decimal → 精确到二进制浮点的最近可表示值:
  • fractions.Fraction → 同样先转成有理数再近似:
(6) 从实现了 __float__() 的自定义对象

2.3、特殊值与边界行为

字面量 / 字符串
Python 结果
注解
float("inf") / float("INF")
math.inf
正无穷
float("-Infinity")
-math.inf
负无穷
float("nan") / float("NAN")
math.nan
Not-a-Number
溢出整数
自动转为 inf
float(10**400)inf
下溢整数
自动转为 0.0
float(10**-400)0.0

2.4、错误与异常

触发场景
异常类型
示例
非法字符串
ValueError
float("1.2.3")
非字符串且无 __float__
TypeError
float([1, 2])
复合对象缺方法
TypeError
float(object())

2.5、常见精度与比较陷阱

  • 无法精确表示的十进制小数
  • 推荐比较方法:使用 Decimal 或 fractions.Fraction 做金融运算。

3、complex:“实部+虚部”的复数类型,写作 a + bj(j 表示虚数单位),支持加减乘除、共轭、模等运算

4、所有数字类型(复数除外)都支持下列运算

运算
结果
备注
完整文档
x + y
x 和 y 的和
x - y
x 和 y 的差
x * y
x 和 y 的乘积
x / y
x 和 y 的商
x // y
x 和 y 的商数
(1)(2)
x % y
x / y 的余数
(2)
\-x
x 取反
+x
x 不变
abs(x)
x 的绝对值或大小
abs()
int(x)
将 x 转换为整数
(3)(6)
int()
float(x)
将 x 转换为浮点数
(4)(6)
float()
complex(re, im)
一个带有实部 re 和虚部 im 的复数;im 默认为 0
(6)
complex()
c.conjugate()
复数 c 的共轭
divmod(x, y)
(x // y, x % y)
(2)
divmod()
pow(x, y)
x 的 y 次幂
(5)
pow()
x \\ y
x 的 y 次幂
(5)

4.1、/(普通除法,浮点除法)

/ 运算符进行的是普通除法,结果总是浮点数(即使是整数除法,也会返回浮动的结果)。

4.2、//(地板除法,整数除法)

// 运算符进行的是地板除法(又称整数除法),返回商的整数部分,向下取整。即使操作数是浮点数,结果也会是整数(或接近整数的浮动值,取决于类型)。

5、所有numbers.Real 类型 (int 和float) 还包括下列运算:

运算
结果
math.trunc(x)
x 截断为 Integral
round(x\[, n])
x 舍入到 n 位小数,半数值会舍入到偶数;若省略 n,默认为 0
math.floor(x)
≤ x 的最大 Integral
math.ceil(x)
≥ x 的最小 Integral

📝 布尔类型---bool

1、代表真值的布尔对象,bool 类型只有两个常量实例: True 和 False。

2、内置函数bool() 可将任意值转换为布尔值,如果该值可以被解读为逻辑值的话。

3、转换

💡
整数0、空字符串、空列表、空元组、空字典转换为布尔值时均为False,其他均为True
 
  • 开发
  • Python
  • Python面向对象-面向对象进阶Python数据类型-基础数据类型-str 字符串
    Loading...