我有一个带浮点数的列表,每个数字都有3位小数(例如474.259).如果我验证列表中的数字,如下所示:
if 474.259 in list_sample:
print "something!"
Run Code Online (Sandbox Code Playgroud)
然后显示消息,但如果我从另一个列表中取出数字并将其舍入:
number = other_list[10]
number = round(number, 3)
if number == 474.259:
print "the numbers are same!"
if number in list_sample:
print "something!"
Run Code Online (Sandbox Code Playgroud)
第二条消息未显示.
比较浮点数以获得完全相等通常不会达到您想要的效果.这是因为计算机中的浮点数具有表示(存储格式),这对于许多实数而言本质上是不准确的.
我建议在这里阅读:http://floating-point-gui.de/并使用"epsilon"容差值进行类似"模糊比较"的操作,只要它们相差小于x%就可以考虑数字相等管他呢.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |