Python中的溢出句柄

时间:2015-12-14 07:54:32

标签: python algorithm

在下面的算法拼图上工作,它需要处理溢出的情况。我很困惑这一行,min(最大值(-2147483648,res),2147483647),如果有人可以评论它如何处理溢出,它会很棒。 :)

顺便说一句,我仍然很困惑为什么在进行两次整数除法计算时Python会出现溢出?

发布详细的问题陈述和解决方案,

除了两个整数而不使用乘法,除法和mod运算符。

如果溢出,则返回MAX_INT。

DefaultKeyTypedAction

1 个答案:

答案 0 :(得分:2)

min(max(-2147483648, res), 2147483647)

这是这两件事的组合:

result = max(-2147483648, res)
min(result, 2147483647)

函数maxmin分别返回传递给它们的最大值和最小值。

如果是max()来电,如果res高于-2147483648,则会返回res的值。否则,如果数字较低,则返回该较大的负数。这可确保从max()调用返回的最小数字为-2147483648。如果res更大,则更好,否则将该数字作为最低边界。

min()电话完全相反。如果2147483647大于它,则通过返回该数字来建立res的最大边界。

合并后,这些函数调用确保-2147483648 <= res <= 2147483647

最后请注意,在Python中,整数的大小并不是很有限。所以这些边界只是在没有实际需要的情况下强制执行(至少对于Python而言),所以如果拼图解决方案需要它,那么这可能是拼图的要求。