<bdo id='YC3iA'></bdo><ul id='YC3iA'></ul>
  • <legend id='YC3iA'><style id='YC3iA'><dir id='YC3iA'><q id='YC3iA'></q></dir></style></legend>
      1. <small id='YC3iA'></small><noframes id='YC3iA'>

        <i id='YC3iA'><tr id='YC3iA'><dt id='YC3iA'><q id='YC3iA'><span id='YC3iA'><b id='YC3iA'><form id='YC3iA'><ins id='YC3iA'></ins><ul id='YC3iA'></ul><sub id='YC3iA'></sub></form><legend id='YC3iA'></legend><bdo id='YC3iA'><pre id='YC3iA'><center id='YC3iA'></center></pre></bdo></b><th id='YC3iA'></th></span></q></dt></tr></i><div id='YC3iA'><tfoot id='YC3iA'></tfoot><dl id='YC3iA'><fieldset id='YC3iA'></fieldset></dl></div>

        <tfoot id='YC3iA'></tfoot>
      2. 如何检测 32 位 int 上的整数溢出?

        时间:2023-10-02

            <bdo id='e2UIf'></bdo><ul id='e2UIf'></ul>
          • <i id='e2UIf'><tr id='e2UIf'><dt id='e2UIf'><q id='e2UIf'><span id='e2UIf'><b id='e2UIf'><form id='e2UIf'><ins id='e2UIf'></ins><ul id='e2UIf'></ul><sub id='e2UIf'></sub></form><legend id='e2UIf'></legend><bdo id='e2UIf'><pre id='e2UIf'><center id='e2UIf'></center></pre></bdo></b><th id='e2UIf'></th></span></q></dt></tr></i><div id='e2UIf'><tfoot id='e2UIf'></tfoot><dl id='e2UIf'><fieldset id='e2UIf'></fieldset></dl></div>

                  <tbody id='e2UIf'></tbody>
                  <legend id='e2UIf'><style id='e2UIf'><dir id='e2UIf'><q id='e2UIf'></q></dir></style></legend>
                1. <tfoot id='e2UIf'></tfoot>

                  <small id='e2UIf'></small><noframes id='e2UIf'>

                  本文介绍了如何检测 32 位 int 上的整数溢出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我知道这样的话题被问了好几次,但我的问题是关于完整的 32 位 int 的溢出.例如:

                  I know such topic was asked several times, but my question is about overflow on full 32 bits of int. For example:

                    11111111111111111111111111111111 +
                    00000000000000000000000000000001 =
                    00000000000000000000000000000000   //overflow!
                  

                  我发现 topic 有类似的问题,但是算法并不完美.

                  I found topic with similar question about this, however the algorithm is not perfect.

                    11111111111111111111111111111111 +
                    00000000000000000000000000000000 =
                    00000000000000000000000000000000  //overflow!
                  

                  有没有什么简单、快速、安全的检查方法?

                  Is there any simple, fast, safer way to check this ?

                  推荐答案

                  Math.addExact 溢出时抛出异常

                  从 Java 8 开始,数学类:

                  Math.addExact throws exception on overflow

                  Since Java 8 there is a set of methods in the Math class:

                  • toIntExact(long)
                  • addExact(int,int)
                  • subtractExact(int,int)
                  • multiplyExact(int,int)

                  ……以及长期版本.

                  这些方法中的每一个都会抛出 ArithmeticException 如果发生溢出.否则,如果它在范围内,它们会返回正确的结果.

                  Each of these methods throws ArithmeticException if overflow happens. Otherwise they return the proper result if it fits within the range.

                  加法示例:

                  int x = 2_000_000_000;
                  int y = 1_000_000_000;
                  try {
                      int result = Math.addExact(x, y);
                      System.out.println("The proper result is " + result);
                  } catch(ArithmeticException e) {
                      System.out.println("Sorry, " + e);
                  }
                  

                  查看此在 IdeOne.com 上实时运行的代码.

                  对不起,java.lang.ArithmeticException:整数溢出

                  Sorry, java.lang.ArithmeticException: integer overflow

                  这篇关于如何检测 32 位 int 上的整数溢出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:return 语句之前的局部变量,这有关系吗? 下一篇:没有了

                  相关文章

                  最新文章

                      <bdo id='zR0NF'></bdo><ul id='zR0NF'></ul>
                    1. <tfoot id='zR0NF'></tfoot>
                      <i id='zR0NF'><tr id='zR0NF'><dt id='zR0NF'><q id='zR0NF'><span id='zR0NF'><b id='zR0NF'><form id='zR0NF'><ins id='zR0NF'></ins><ul id='zR0NF'></ul><sub id='zR0NF'></sub></form><legend id='zR0NF'></legend><bdo id='zR0NF'><pre id='zR0NF'><center id='zR0NF'></center></pre></bdo></b><th id='zR0NF'></th></span></q></dt></tr></i><div id='zR0NF'><tfoot id='zR0NF'></tfoot><dl id='zR0NF'><fieldset id='zR0NF'></fieldset></dl></div>
                    2. <legend id='zR0NF'><style id='zR0NF'><dir id='zR0NF'><q id='zR0NF'></q></dir></style></legend>
                    3. <small id='zR0NF'></small><noframes id='zR0NF'>