Python编程中的陷阱、循环与列表使用
1. 编程数学时的陷阱
在进行数学编程时,虽然大多数情况下数学运算能按预期工作,但仍存在一些潜在的错误源,即使这些情况相对罕见,了解它们也是很有必要的。
1.1 舍入误差
计算机由于舍入误差,其算术运算并不精确。例如计算 1/49 * 49 和 1/51 * 51 :
v1 = 1/49.0*49
v2 = 1/51.0*51
print(f"{v1:.16f} {v2:.16f}")
输出结果为:
0.9999999999999999 1.0000000000000000
大多数实数在计算机中都是近似表示的,精度通常为17位。 1/49 和 1/51 都无法精确表示,误差约为 10^-16 。这种误差一般不会产生太大影响,但在两种特定情况下可能会变得显著:
- 误差可能会在多次计算中累积,最终导致结果出现显著误差。
- 比较两个小数时可能会出现不可预测的结果。例如:
print(v1 == 1)
print(v2 == 1)
输出结果为:
False
True
为了解决这个问题,我们应该使
超级会员免费看
订阅专栏 解锁全文
596

被折叠的 条评论
为什么被折叠?



