长整型/整型除法的意外结果
我有这样的值:
long millis = 11400000;
int consta = 86400000;
double res = millis/consta;
问题是:为什么等于(而不是 ca.)?它被存储进去,所以不应该有四舍五入对吧?res
0.0
0.131944
double
我有这样的值:
long millis = 11400000;
int consta = 86400000;
double res = millis/consta;
问题是:为什么等于(而不是 ca.)?它被存储进去,所以不应该有四舍五入对吧?res
0.0
0.131944
double
使用二元运算符时,两个参数应具有相同的类型,并且结果也将采用其类型。当您要将其除以时,它将变为,结果是 。你应该把它变成一个或得到一个双重的结果。由于双精度大于 int 和 long,int 和 long 将变为 double in 和(int)/(long)
(long)/(long)
(long)
(double)/(long)
(int)/(double)
(double)/(long)
(int)/(double)
因为你正在除以一个你得到的结果。你实际上正在做的是long
int
long
double res = (double) (millis/consta);
如 ,当转换为millis/consta
0
double
0.0
尝试以下方法将双精度数除以整数,得到双精度结果。
double res = (double) millis/consta;
这与
double res = ((double) millis)/((double) consta));