导航菜单

  • 1.Python介绍
  • 2.Python解释器
  • 3.安装Python
  • 4.VSCode开发Python
  • 5.print
  • 6.进制
  • 7.编码
  • 8.Unicode2UTF8
  • 9.整数类型
  • 10.字符串类型
  • 11.布尔类型
  • 12.变量与内存
  • 13.浮点类型
  • 14.注释
  • 15.if条件
  • 16.while循环
  • 17.运算符
  • 18.输入
  • 19.列表
  • 20.元组
  • 21.集合
  • 22.字典
  • 23.for循环
  • 13.1 什么是浮点数?
  • 13.2 精度问题(重要)
  • 13.3 显示与四舍五入
  • 13.4 金额与精确计算:Decimal
  • 13.5 项目开发要点

13.1 什么是浮点数? #

float 表示带小数的实数。除法 / 的结果始终是浮点数,即使能整除:

pi = 3.14
price = 19.99
ratio = 7 / 3              # 2.3333333333333335

print(float("3.14"))       # 从字符串解析
print(type(pi))            # <class 'float'>

科学计数法:1.5e6 表示 $1.5 \times 10^6$。

13.2 精度问题(重要) #

计算机用二进制存浮点数,部分十进制小数无法精确表示:

print(0.1 + 0.2)           # 0.30000000000000004
print(0.1 + 0.2 == 0.3)    # False

因此:

  • 不要用 == 直接比较浮点数
  • 需要判断「是否接近」时用 math.isclose()
import math

print(math.isclose(0.1 + 0.2, 0.3))   # True

13.3 显示与四舍五入 #

展示给用户时用 round() 或 f-string 控制小数位,不要直接展示一长串尾数:

price = 19.9876

print(round(price, 2))         # 20.0(注意:round(2.5) 为 2,银行家舍入)
print(f"¥{price:.2f}")          # ¥19.99(展示金额常用)

需要向上/向下取整时用 math.ceil()、math.floor()。

13.4 金额与精确计算:Decimal #

金额、账单、库存单价等业务场景不要用 float 做加减乘除,应使用 decimal.Decimal:

from decimal import Decimal

a = Decimal("0.1")
b = Decimal("0.2")
print(a + b)                   # 0.3(精确)

# 用字符串初始化,不要用 Decimal(0.1)
total = Decimal("19.99") * Decimal("3")
print(total)                   # 59.97(精确)

数据库、API 返回的金额字段,在 Python 中处理时也优先用 Decimal 或分为单位的整数(分、厘)。

13.5 项目开发要点 #

  1. 统计、比率、坐标:float 够用;比较时用 math.isclose()
  2. 金额:用 Decimal,或整数存「分」再除以 100 展示
  3. 展示:f"{x:.2f}" 控制小数位;入库、计算仍用 Decimal
  4. / 与 //:/ 得 float;只要整数结果用 //
  5. 解析输入:float(user_input) 可能抛 ValueError,需校验
  6. 金额字符串转 Decimal("19.99")
← 上一节 12.变量与内存 下一节 14.注释 →

访问验证

请输入访问令牌

Token不正确,请重新输入