所以这只是浪费一对夫妇在调试矿井小时..浮点数到整数转换在Python行事怪异超级
a,b = 32980.642295,32630.642295
print a-b
print int(a-b)
print int(a) - int(b)
输出:
350.0
349
350
能有人向我解释是怎么回事上?为什么350.0的int不是350?我认为Python是做一些奇怪的东西,在转换为int之前铸造和b ..
编辑/更新:
x = a-b
值存储在X现在349.99999999999636不350.0
这可能有助于未来的人来到
我搜索了一下,发现了什么(我认为)是问题。它不是我的打印版本,因为我将值存储在变量中并稍后访问它,但它处理浮点数学的方式。我只是在这里用例子来说明我的坏处。 这有助于我的理解https://stackoverflow.com/questions/588004/is-floating-point-math-broken# 如果我使x = ab,然后检查x,它会给我349.99999999999636 –
它使得没有不管你直接使用'ab'还是将它存储在一个变量中,都是不同的。计算出的值完全相同。你的输出为'350.0'的原因已经解释过了:在Python 2中'print'将显示值显示为12位有效数字。无论您是“打印a-b”还是“打印x”,无所谓。 –