Java模不';我不能和大数字打交道

Java模不';我不能和大数字打交道,java,modulo,Java,Modulo,我正在创建一个用Java计算的程序。在执行此操作时,我注意到模%运算符在处理大数时不能正常工作 这是我的密码: 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。 为什么会出现这种情况?我如何解决它?将double更改

我正在创建一个用Java计算的程序。在执行此操作时,我注意到模
%
运算符在处理大数时不能正常工作

这是我的密码:

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

为什么会出现这种情况?我如何解决它?

double
更改为
long
甚至更好地更改为biginger