使用 int() 函数(直接截断)
这是最直接、最常用的方法。int() 函数会直接将浮点数的小数部分截断(丢弃),只保留整数部分。

语法:
int(浮点数)
特点:
- 行为: 向零取整,对于正数,直接去掉小数部分;对于负数,也是直接去掉小数部分(注意,这不同于向下取整)。
- 速度: 非常快,因为它只是简单地截断数据。
- 场景: 当你明确地只想“丢弃”小数部分时使用,计算物品的整数个数,不考虑小数。
示例:
# 正数
f1 = 10.9
i1 = int(f1)
print(f"{f1} 转换为 int 是: {i1}") # 输出: 10.9 转换为 int 是: 10
# 负数
f2 = -10.9
i2 = int(f2)
print(f"{f2} 转换为 int 是: {i2}") # 输出: -10.9 转换为 int 是: -10
# 小数部分正好是 0.5
f3 = 10.5
i3 = int(f3)
print(f"{f3} 转换为 int 是: {i3}") # 输出: 10.5 转换为 int 是: 10
# 小数部分小于 0.5
f4 = 10.2
i4 = int(f4)
print(f"{f4} 转换为 int 是: {i4}") # 输出: 10.2 转换为 int 是: 10
使用 round() 函数(四舍五入)
round() 函数用于对浮点数进行四舍五入,然后返回一个整数。

语法:
round(浮点数)
特点:
- 行为: 标准的四舍五入规则。
- 如果小数部分 >= 0.5,则向上取整(绝对值变大)。
- 如果小数部分 < 0.5,则向下取整(绝对值变小)。
- 注意: Python 3 中的
round()函数对于.5的情况,会舍入到最近的偶数,这被称为“银行家舍入法”或“四舍六入五成双”,这可以减少在大量计算中因系统性舍入误差带来的偏差。 - 场景: 当你需要对数值进行标准的四舍五入处理时使用,计算平均分并保留整数。
示例:
# 小数部分 > 0.5,向上取整
f1 = 10.9
r1 = round(f1)
print(f"{f1} 四舍五入是: {r1}") # 输出: 10.9 四舍五入是: 11
# 小数部分 < 0.5,向下取整
f2 = 10.2
r2 = round(f2)
print(f"{f2} 四舍五入是: {r2}") # 输出: 10.2 四舍五入是: 10
# 小数部分正好是 0.5 (舍入到最近的偶数)
f3 = 10.5
r3 = round(f3)
print(f"{f3} 四舍五入是: {r3}") # 输出: 10.5 四舍五入是: 10 (10是偶数)
f4 = 11.5
r4 = round(f4)
print(f"{f4} 四舍五入是: {r4}") # 输出: 11.5 四舍五入是: 12 (12是偶数)
# 负数的情况同样遵循规则
f5 = -10.5
r5 = round(f5)
print(f"{f5} 四舍五入是: {r5}") # 输出: -10.5 四舍五入是: -10 (-10是偶数)
| 特性 | int() |
round() |
|---|---|---|
| 转换规则 | 截断小数部分(直接丢弃) | 四舍五入 |
| 对正数 10.9 的处理 | 10 |
11 |
| 对正数 10.5 的处理 | 10 |
10 (舍入到最近的偶数) |
| 对负数 -10.9 的处理 | -10 |
-11 |
| 对负数 -10.5 的处理 | -10 |
-10 (舍入到最近的偶数) |
| 主要用途 | 获取整数部分,忽略小数 | 获取最接近的整数值 |
⚠️ 重要注意事项:浮点数精度问题
由于计算机使用二进制存储浮点数,很多小数(如 1, 2)无法被精确表示,这会导致微小的精度误差。
示例:
# 看似是 1.0,但实际存储的值可能略小于或大于 1.0 f = 1.0000000000000001 print(f) # 输出: 1.0 print(int(f)) # 输出: 1 # 看似是 1.0000000000000002,可能因为精度问题被存储为 1.0 f = 1.0000000000000002 print(f) # 输出: 1.0 print(int(f)) # 输出: 1 # 一个更经典的例子 sum_val = 0.1 + 0.2 print(sum_val) # 输出: 0.30000000000000004 print(int(sum_val)) # 输出: 0
在进行转换前,如果需要处理精度问题,可以考虑使用 decimal 模块,但大多数情况下,int() 和 round() 的行为是符合预期的。
何时使用哪个?
-
使用
int()的情况:- 你只想获取浮点数的整数部分,不关心小数。
- 计算一个商品能装满多少个完整的箱子(
int(total_weight / box_weight))。 - 你需要“向下取整”效果(对于正数)。
-
使用
round()的情况:- 你需要对数值进行标准的四舍五入。
- 将学生的最终成绩(如
6)四舍五入为整数(90)。 - 你需要统计报表,希望数据更接近其理论值。
如何选择向下取整?
虽然 int() 对正数是向下取整,但对负数不是,如果你需要真正的“向下取整”(即向负无穷方向取整),可以使用 math.floor()。
import math f1 = 10.9 f2 = -10.9 # int() 截断 print(int(f1)) # 10 print(int(f2)) # -10 # math.floor() 向下取整 print(math.floor(f1)) # 10 print(math.floor(f2)) # -11 (真正的向下取整)
| 你的目标 | 推荐函数 |
|---|---|
| 直接丢弃小数部分 | int() |
| 标准的四舍五入 | round() |
| 向负无穷方向取整(向下取整) | math.floor() |
| 向正无穷方向取整(向上取整) | math.ceil() |
希望这个详细的解释能帮助你完全理解 Python 中 float 到 int 的转换!
