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, Почему это и как я могу это исправить?

0 ответов

Другие вопросы по тегам