一、认识浮点数
1. 什么是浮点数?
- 生活案例:
- 你的身高:1.75米
- 披萨价格:39.99元
- 体温:36.5℃
- 编程定义:带小数点的数字(称为”float”)
- 特点:
- 可以表示分数(如1/2 = 0.5)
- 有精度限制(计算机存储的特殊性)
2. 与整型的区别
# 对比示例
age = 25 # 整型(没有小数点)
height = 1.75 # 浮点型(带小数点)
二、创建浮点数变量
1. 直接赋值
price = 9.99
temperature = -3.5
pi = 3.1415926
2. 科学计数法
earth_mass = 5.972e24 # 5.972×10²⁴
virus_size = 1.2e-7 # 0.00000012
print(earth_mass) # 输出5972000000000000000000000.0
3. 从整型转换
my_int = 5
my_float = float(my_int) # 转换为5.0
print(my_float) # 输出5.0
三、浮点数的运算
1. 基础运算
a = 3.5
b = 2.0
print(a + b) # 5.5
print(a - b) # 1.5
print(a * b) # 7.0
print(a / b) # 1.75
2. 混合运算(整型与浮点型)
result = 3 + 2.5 # 自动转换为浮点型
print(result) # 5.5
print(type(result)) # <class 'float'>
3. 精度问题(重要!)
# 经典精度问题示例
print(0.1 + 0.2) # 输出0.30000000000000004(不是0.3!)
print(0.1 + 0.2 == 0.3) # 输出False
# 解决方法:使用round函数
print(round(0.1 + 0.2, 1) == 0.3) # True
四、类型转换
1. 字符串转浮点数
stra = "98.5"
floata = float(score_str)
print(floata) # 98.5
# 注意:字符串必须符合数字格式
# float("abc") # 会报错!
2. 浮点数转整型
pi = 3.1415
print(int(pi)) # 3(直接截断小数)
五、常见问题与解决方案
1. 精度丢失问题
# 避免直接比较浮点数
a = 0.1 + 0.2
b = 0.3
# 正确比较方法:设置误差范围
e = 1e-9
print(abs(a - b) < e) # True
2. 除以零的情况
try:
print(5.0 / 0.0) # 会引发ZeroDivisionError
except ZeroDivisionError:
print("不能除以零!")
3. 无效转换处理
user_input = "3.14元"
try:
num = float(user_input)
except ValueError:
print("输入的不是纯数字!")