对于大商,整数除法(//
)似乎不一定等于正则除法(math.floor(a/b)
)的下限。
根据Python (https://docs.python.org/3/reference/expressions.html - 6.7),
整数的地板除法得到一个整数;结果是数学除法的结果,并将“地板”函数应用于结果。
然而,
math.floor(648705536316023400 / 7) = 92672219473717632
648705536316023400 // 7 = 92672219473717628
'{0:.10f}'.format(648705536316023400 / 7)
产生“92672219473717632.0000000000”,但小数部分的最后两位数应该是28,而不是32。
发布于 2018-12-21 22:53:17
您可能正在处理的积分值太大,无法准确表示为浮点数。您的数字明显大于2^53,即相邻浮点之间的间隙开始大于1。。所以你在做浮点除法时会失去一些精度。
另一方面,整数除法是精确计算的。
https://stackoverflow.com/questions/53891566
复制相似问题