Wou*_*ris 3 java double int casting integer-overflow
整数a=200000;
双 b = (双) (a*a);
我希望能够计算 (a a) (整数)是否已经太大(stackOverflow)而无法保存在变量中;在这种情况下,我知道乘以 (a a) 会导致一个不适合的 int -> 数字将是错误的;
我不明白的是我如何能够从我的头脑中计算出这个。如何查看某个值是否不适合 int 变量?
有没有一种方法可以不使用方法,仅使用纯代码和常识来做到这一点?;-)
此致,
沃特
两种可能的解决方案。
\n捕获调用Math.\xe2\x80\xa6Exact方法后抛出的异常:Math.multiplyExact, Math.addExact,Math.decrementExact等。
int a = 200000;\n\n try {\n int result = Math.multiplyExact(x, y);\n\n } catch(ArithmeticException e) {\n //if you get here, it is too big\n }\nRun Code Online (Sandbox Code Playgroud)\n\n long test = (long)a*(long)a;\n if (test > Integer.MAX_VALUE || test < Integer.MIN_VALUE)\n // Overflow!\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7808 次 |
| 最近记录: |