长整型/整型除法的意外结果

2022-09-02 02:32:00

我有这样的值:

long millis = 11400000;
int consta = 86400000;
double res = millis/consta;

问题是:为什么等于(而不是 ca.)?它被存储进去,所以不应该有四舍五入对吧?res0.00.131944double


答案 1

使用二元运算符时,两个参数应具有相同的类型,并且结果也将采用其类型。当您要将其除以时,它将变为,结果是 。你应该把它变成一个或得到一个双重的结果。由于双精度大于 int 和 long,int 和 long 将变为 double in 和(int)/(long)(long)/(long)(long)(double)/(long)(int)/(double)(double)/(long)(int)/(double)


答案 2

因为你正在除以一个你得到的结果。你实际上正在做的是longintlong

double res = (double) (millis/consta);

如 ,当转换为millis/consta0double0.0

尝试以下方法将双精度数除以整数,得到双精度结果。

double res = (double) millis/consta;

这与

double res = ((double) millis)/((double) consta));

推荐