我在python中计算了以下两个值,得到了不同的结果!如果有人能推理出为什么会发生这样的事情,那就太好了。
(111 - (111 + 2*17)*3375)/(-14)提供34947作为输出。
(111 - (111 + 2*17)*3375)/(14)*-1提供34948作为输出。
这两个术语在数学上是等价的。
发布于 2014-05-07 21:47:03
发布于 2014-05-07 21:50:06
你在做整数运算,根据分数结果是负的还是正的,对分数的结果进行不同的舍入。使用浮点除法:
>>> (111 - (111 + 2*17)*3375)/(14.)*(-1)
34947.42857142857
>>> (111 - (111 + 2*17)*3375)/(-14.)
34947.42857142857发布于 2014-05-07 21:56:41
这取决于python处理整数除法的方式。
如果你的除法的分子(顶部)或除数(底部)是负的,那么python就会舍弃零。要使自己相信这一点,一个简单的方法是比较两个简单的分数:25/6和25/(-6)。它们将分别产生4和-5。
为了得到同样的结果,我们可以用一个浮点数( 14.0 )来转换为浮点算术。
如果您对更多的数学感兴趣,这似乎是一篇很好的文章:http://python-history.blogspot.co.nz/2010/08/why-pythons-integer-division-floors.html
https://stackoverflow.com/questions/23528991
复制相似问题