1. 什么是浮点数? #
float 表示带小数的实数。
除法 / 的结果始终是浮点数,即使能整除。
pi = 3.14
price = 19.99
ratio = 7 / 3
print (float ("3.14" ))
print (type (pi))
科学计数法:1.5e6 表示 $1.5 \times 10^6$。
2. 精度问题(重要) #
计算机用二进制存浮点数,部分十进制小数无法精确表示。
print (0.1 + 0.2 )
print (0.1 + 0.2 == 0.3 )
不要用 == 直接比较浮点数 。
需要判断「是否接近」时用 math.isclose()。
import math
print (math.isclose(0.1 + 0.2 , 0.3 )) 3. 显示与四舍五入 #
展示给用户时用 round() 或 f-string 控制小数位,不要直接展示一长串尾数。
price = 19.9876
print (round (price, 2 ))
print (f"¥{price:.2 f} " )
需要向上/向下取整时用 math.ceil()、math.floor()。
4. 金额与精确计算:Decimal #
金额、账单、库存单价 等业务场景不要用 float 做加减乘除,应使用 decimal.Decimal。
from decimal import Decimal
a = Decimal("0.1" )
b = Decimal("0.2" )
print (a + b)
total = Decimal("19.99" ) * Decimal("3" )
print (total)
数据库、API 返回的金额字段,在 Python 中处理时也优先用 Decimal 或分为单位的整数(分、厘)。
5. 项目开发要点 #
统计、比率、坐标 :float 够用;比较时用 math.isclose()。
金额 :用 Decimal,或整数存「分」再除以 100 展示。
展示 :f"{x:.2f}" 控制小数位;入库、计算仍用 Decimal。
/ 与 // :/ 得 float;只要整数结果用 //。
解析输入 :float(user_input) 可能抛 ValueError,需校验。
金额字符串转 Decimal("19.99")。