可能重复:
How can I check if multiplying two numbers in Java will cause an overflow?
正如大家可能知道的那样,一些编程难题要求其成员计算一个非常大的数字。
例如:
long a = 10000000000L;
long b = 10000000000L;
long c = a * b;
System.out.println(c);
上面的代码输出错误的输出,这是7766279631452241920.这种问题让我发疯了两次。因为我确信我的算法是正确的(我用较小的值测试它)但是更大的值打印错误的输出。
在我看来,使用BigInteger是最后的选择,因为我认为BigInteger的执行速度比原生数据类型(如int或long)慢。
检查/防止算术溢出是否发生的最佳方法是什么?请不要告诉我使用BigInteger。我已经知道了