Java modulo doesn't work with large numbers
I am creating a program to calculate Mersenne primes in Java. While doing so, I noticed that the modulo %
operator doesn't function properly when dealing with large numbers.
Вот мой код:
double a = 2305843009213693951d; //2^61 -1
double b = 2;
double m = a % b; //this should be 1.0
System.out.println(m); //prints 0.0
Хотя можно ожидать, что результат будет 1, поскольку исходное число не является четным, оно на самом деле возвращает 0.0
, Почему это и как я могу это исправить?