我正在创建一个用Java计算Mersenne primes的程序。在这样做时,我注意到模%
运算符在处理大数时不能正常运行。
这是我的代码:
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
。
为什么会这样,我该如何解决?