16

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

4

3 回答 3

22

%操作员确实工作了很长时间。听起来您可能忘记L在数字文字的末尾加上123456789L. 我们可以看看你的代码吗?

于 2011-04-20T23:04:16.990 回答
6

您最多只能有一个整数,最大为 2 147 483 647。如果您想要更大,比如 30 亿,您必须将其指定为 long

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 非常相似。

于 2011-04-20T23:08:53.687 回答
0

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

于 2011-04-20T23:11:23.080 回答