是否有可能预测数学运算是否会导致溢出?

时间:2010-08-19 22:02:32

标签: math programming-languages numbers precision

假设您有2个数字,对于每个典型的数学运算,是否可以预测(没有显着的开销)这些运算是否会导致这些数字当前表示为的类型溢出?

3 个答案:

答案 0 :(得分:2)

我们假设溢出发生在100,为简单起见。

a * b >= 100,我们有溢出

因此,对于a = n,如果b >= 100 / n,我们会溢出。如果ab为0,则表示您没有溢出。

这对于任何需要增加右手常数的数学设置都不起作用,因为溢出检测会溢出。但是,操作的任何给定步骤都可能溢出,因此您确实需要在机器级别(而不是算法级别)之前检查每个加法和乘法。因此,您需要将问题划分为已知的最小数量,以便有效地使用此溢出检测。

我宁愿让语言抛出异常,但那只是我。

答案 1 :(得分:0)

打开溢出保护,然后应用操作。如果抛出溢出异常,或者错误寄存器设置了溢出位,或者您的环境告诉您该问题,那么您知道如果再次执行此操作,则会出现溢出。

答案 2 :(得分:0)

总结:

MAX_NUMBER - A < B

会有溢出