Skip to main content
 首页 » 编程设计

python之If 语句不起作用 (Python)

2025年05月04日17lori

这似乎是非常简单的代码,但由于某些原因,它就是行不通。我需要在某些时候输出一个值,但 if 语句似乎没有评估。以下是我正在尝试做的基本版本。

dt=.1 
 
while t<=10: 
     if t==5: 
          print('yes') 
     t+=.1 

我真的在我的代码中尝试过这个,我什至让它在每个时间步都打印 t 但它不会打印"is"。我的代码中还有其他 if 语句,如

if 10<=t<60: 
     do stuff 

并且这些 if 语句运行完美。我已经尝试过 t==5.0 和 t==float(5) 以防万一它需要它,但它也没有用。这让我发疯,所以如果有人可以帮助我,那就太好了。我在 Ubuntu 12.4 上的 Spyder 中运行它,我收到一条消息说 import sitecustomize 失败。这会和它有什么关系吗?我已经使用该消息运行代码一段时间了,之前没有引起任何问题。

编辑

得到它的工作,我用过

if int(t)==5 and t<5+dt: 

感谢帮助

请您参考如下方法:

1) float 没有无限的精度 - 它们在内存中占用一定数量的位(通常是 64 位或 32 位)。

2) 他们对尾数使用二进制内部表示(基本上,除了第一位之外的所有有效数字)。

3) .1 不能精确地存储为二进制表示 - 只能作为二进制位的无限重复模式,并且由于尾数非常大, float 实际上是 .1 的近似值,而不是 .1。 1. (但是,0.5 和 0.25 之类的东西可以)

4) 因此,相加 .1s 并不能保证得到完美的结果——错误的舍入方式会导致错误。例如,.1 与自身相加十次可能会得到 1.0000...1 或 0.999999...9。

参见 http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html每个计算机科学家都应该了解的浮点运算知识