What is the modulo operator for longs in Java?
35,416
Solution 1
The %
operator does work for longs. It sounds like you may have forgotten to stick L
at the end of a numeric literal, as in 123456789L
. Can we see your code?
Solution 2
You can only have an integer up to 2 147 483 647. If you want to go bigger than that, say 3 billion, you must specify it to be a 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
}
}
Keep in mind that you can use capital OR lowercase L, but it's advisable to use capital, since the lowercase looks remarkably similar to the number 1.
Author by
Descartes
Updated on July 10, 2020Comments
-
Descartes almost 4 years
How do I find the modulo (%) of two long values in Java? My code says 'Integer number too large' followed by the number I'm trying to mod. I tried casting it to a long but it didn't work. Do I have to convert it to a BigInteger and use the remainder method? Thanks.
-
Descartes about 13 yearsOkay, the following code is inside a for loop and total is a BigInteger.
code
total = total.add(BigInteger.valueOf(b(i)%1234567891011)code
-
Marvo about 13 yearsMight you need an L at the end of 1234567891011? Assuming b(i) returns a long as well.
-
Daniel Lubarov about 13 yearsYeah, just stick an "L" on the end of 1234567891011 to tell the compiler it's a long literal (otherwise the compiler will treat it as an int literal).
-
alternative about 13 yearsHis question states that this is already a possibility but he doesn't want to do this.
-
elekwent about 13 yearsYou're right. I missed that in his question. I'll leave my answer the way it is though, as sort of an awkward answer to him asking "Do I have to convert it to a BigInteger and use the remainder method?".
-
elekwent about 13 yearsAnother way to read my answer above... Yes, you can also try working with the BigInteger class, which has a remainder() method that works similarly to %. You see what I did? I add a yes and two commas, and now it answers his question perfectly.