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