【问题标题】:What is the modulo operator for longs in Java?Java 中 long 的模运算符是什么?
【发布时间】:2011-04-20 23:02:07
【问题描述】:

如何在 Java 中找到两个 long 值的模 (%)?我的代码显示“整数太大”,后跟我要修改的数字。我尝试将其投射到很长的时间,但没有奏效。我是否必须将其转换为 BigInteger 并使用余数方法?谢谢。

【问题讨论】:

    标签: java long-integer modulo modulus


    【解决方案1】:

    % 运算符确实可以长时间工作。听起来您可能忘记在数字文字的末尾加上L,如123456789L。我们可以看看你的代码吗?

    【讨论】:

    • 好的,下面的代码在 for 循环中,total 是一个 BigInteger。 code total = total.add(BigInteger.valueOf(b(i)%1234567891011) code
    • 在 1234567891011 的末尾可能需要一个 L 吗?假设 b(i) 也返回一个 long。
    • 是的,只要在 1234567891011 的末尾加上一个“L”,告诉编译器这是一个长文本(否则编译器会将其视为 int 文本)。
    【解决方案2】:

    你只能有一个不超过 2 147 483 647 的整数。如果你想变得更大,比如 30 亿,你必须指定它是一个长整数

    class Descartes {
        public static void main(String[] args) {
            long orig = Long.MAX_VALUE;
            long mod = orig % 3000000000; // ERROR 3000000000 too big
            long mod = orig % 3000000000L; // no error, specified as a long with the L
        }
    }
    

    请记住,您可以使用大写或小写 L,但建议使用大写,因为小写看起来与数字 1 非常相似。

    【讨论】:

      【解决方案3】:

      您也可以尝试使用 BigInteger 类,该类有一个与 % 类似的剩余 () 方法。

      【讨论】:

      • 他的问题表明这已经是一种可能,但他不想这样做。
      • 你是对的。我在他的问题中错过了这一点。不过,我将按原样保留我的答案,作为对他问“我是否必须将其转换为 BigInteger 并使用余数方法?”的尴尬回答。
      • 另一种阅读我上面答案的方法...是的,您也可以尝试使用 BigInteger 类,它有一个与 % 类似的剩余()方法。你看到我做了什么吗?我添加了一个是和两个逗号,现在它完美地回答了他的问题。
      猜你喜欢
      • 2012-11-21
      • 2015-06-14
      • 2017-10-13
      • 2020-02-07
      • 1970-01-01
      • 2012-06-15
      • 2020-05-22
      • 2011-09-13
      • 2011-04-02
      相关资源
      最近更新 更多