Что такое оператор modulo для longs в Java?

Как найти modulo (%) двух длинных значений в Java? Мой код говорит: "Целое число слишком велико", за которым следует номер, который я пытаюсь создать. Я попытался сделать это долго, но это не сработало. Должен ли я преобразовать его в BigInteger и использовать метод остатка? Спасибо.

Ответ 1

Оператор % работает долго. Похоже, вы, возможно, забыли вставить L в конце числового литерала, как в 123456789L. Можем ли мы увидеть ваш код?

Ответ 2

У вас может быть только целое число до 2 147 483 647. Если вы хотите пойти больше, скажем, 3 миллиарда, вы должны указать, что это длинный

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, у которого есть метод rest(), который работает аналогично%.