适合人群:零基础自学者 | 编程小白快速入门
阅读时长:约6分钟
文章目录
一、问题:Python的浮点数和浮点数类型转换?
1、例子1:超市结账比喻:为什么0.1+0.2≠0.3?
# 浮点数精度问题演示
print(0.1 + 0.2) # 输出:0.30000000000000004
print(0.1 + 0.2 == 0.3) # 输出:False → 像超市结账时的分币误差
# 精确计算方案
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 输出:0.3
关键说明:
- 浮点数像带刻度的量杯,存在微小测量误差
decimal
模块采用十进制运算(非二进制),类似会计用的电子秤,可精确控制小数位数
2、例子2:自动转型案例、四舍五入的特殊规则
# 温度单位转换器
celsius = 37.5
fahrenheit = celsius * 1.8 + 32
print(f"体温:{fahrenheit:.1f}℉") # 输出:体温:99.5℉
# 自动转型验证
result = 5 + 3.0 # 整数 + 浮点数 = 浮点数
print(type(result)) # <class 'float'> → 自动升级为浮点型
# 四舍五入的特殊规则
print(round(2.5)) # 输出:2
# 解释:银行家舍入法(四舍六入五成双):当舍入位是5时,若前一位是偶数则舍,奇数则入
print(round(3.5)) # 输出:4
print(round(9.4999)) # 输出:9
3、答案:
(1)Python的浮点数
- 浮点数
float
用小数或科学计数法表示,如:3.14
表示成314E-2
或者341e-2
(相当于314*10-2
) - 由于二进制浮点数精度限制,进行精确计算(如财务运算)时应当使用
decimal
模块。
(2)浮点数的自动转换、强制转换和四舍五入
- 强制转换:使用
float()
将其他类型转换成浮点数 - 自动转换:整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:
2+8.0
的结果是10.0
- 四舍五入:
round(value)
可以返回四舍五入的值。但不会改变原有的值,而是产生新的值。
二、问题:Python的增强赋值运算符?
1、例子1:游戏金币计数器
gold = 100
gold *= 2 # 金币翻倍
gold -= 50 # 购买道具
print(f"剩余金币:{gold}") # 输出:剩余金币:150
2、答案:
(1)增强赋值运算符
- 运算符
+
、-
、*
,/
、//
、**
、%
和赋值符=
结合,可以构成增强赋值运算符。
增强赋值运算符如下:
运算符 | 例子 | 等价 |
---|---|---|
+= | a += 2 | a = a + 2 |
-= | a -= 2 | a = a-2 |
*= | a *= 2 | a = a * 2 |
/= | a /= 2 | a = a / 2 |
//= | a //= 2 | a = a//2 |
**= | a **= 2 | a = a**2 |
%= | a %= 2 | a = a % 2 |
(2)⚠ 新手注意
+=
中间不能加空格!- 结合的是右侧整个表达式:
y *= x+2
# 相当于:y = y*(x+2)
而不是:y = y*x+2
三、动手试一试
- 浮点数转换验证 。
# 观察数据类型自动转换
a = 5 + 3.0
print(a) # 输出:_____
print(type(a)) # 输出:_____
# 强制类型转换练习
price = "9.9"
float_price = _____ # 补全代码(将字符串转为浮点数)
print(float_price) # 输出:9.9
参考答案:
a = 5 + 3.0
print(a) # 输出:8.0
print(type(a)) # 输出:<class 'float'>
float_price = float(price)
- 增强赋值运算符应用。
# 游戏金币计数器
gold = 100
gold += 50 # 拾取金币
gold *= 2 # 触发双倍奖励
gold -= 30 # 购买道具
print(f"最终金币:{gold}") # 输出:_____
参考答案:
最终金币:270
计算过程:
100 + 50 = 150
150 * 2 = 300
300 - 30 = 270
📢 互动区
👉 遇到问题?在评论区:
- 描述问题(带代码截图更好)
- 分享学习心得
- 给文章提建议
⭐ 支持作者:点赞 | 收藏 | 关注
你的三连是我更新的最大动力!
👉 下篇预告
14、时间的表示_unix时间点_毫秒微妙_time模块
→ Unix时间点原理与时间戳获取实战
→ 代码耗时统计与时间单位转换技巧