Что такое оператор по модулю для long в Java? - PullRequest
12 голосов
/ 21 апреля 2011

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

Ответы [ 3 ]

18 голосов
/ 21 апреля 2011

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

5 голосов
/ 21 апреля 2011

Вы можете иметь только целое число до 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.

0 голосов
/ 21 апреля 2011

Вы также можете попробовать работать с классом BigInteger, у которого есть метод remainder (), который работает аналогично%.

...