我做了一些计算,得到了这样的结果:
newInteger = 200
newFloat = 200.0
if newInteger >= newFloat:
print "Something"
当我运行应用程序时,它不会打印出来,但是当我在pythonshell上测试它时,它会打印Something
!!。你知道吗
所以我测试这个
>>> number = 200.0000000000001
>>> number
200.0000000000001
但当小数超过13时,就像这样:
>>> number = 200.00000000000001
>>> number
200.0
python是否隐藏了十进制数,但显示为四舍五入?在调试时,了解结果非常重要。你知道吗
有什么办法我能得到整数吗?(我确实查阅了python文档,它没有提到任何关于打印实际浮点数的内容。)
这叫做浮点舍入误差。它与Python如何存储float(二进制)有关,这使得float不可能有100%的精度。你知道吗
更多信息请参见docs。你知道吗
如果需要更高的精度,请参阅^{} 模块。你知道吗
如果您只想快速比较两个数字,有几个技巧可以用于浮点比较。最常用的方法之一是将相对误差与机器精度(epsilon)进行比较:
但这也不是完美的。有关此方法的缺陷和一些更精确的替代方法的讨论,请参见article about comparing floats。你知道吗
Python倾向于舍入数字:
然而,浮点数有一个特定的精度,你不能超过它。不能以浮点形式存储任意数字:
对于整数,浮点限制为2**53:
如果要存储任意十进制数,应使用十进制模块:
相关问题 更多 >
编程相关推荐