ale*_*lex 15 java double int division
我有这样的价值观:
long millis = 11400000;
int consta = 86400000;
double res = millis/consta;
Run Code Online (Sandbox Code Playgroud)
问题是:为什么res等于0.0(而不是ca. 0.131944)?存储在double那里应该没有向右舍入?
小智 26
当您使用二元运算符时,两个参数应该是相同的类型,结果也将是它们的类型.当你想要分成(int)/(long)它时(long)/(long),结果是(long).你应该做它(double)/(long)或(int)/(double)获得双重结果.由于double大于int和long,因此int和long将变为double (double)/(long)和(int)/(double)
Pet*_*rey 19
因为你是分割long由int你得到的long结果.你实际做的是
double res = (double) (millis/consta);
Run Code Online (Sandbox Code Playgroud)
如millis/constaIS 0,投的时候double是0.0
尝试以下操作将double除以int并获得double结果.
double res = (double) millis/consta;
Run Code Online (Sandbox Code Playgroud)
这是一样的
double res = ((double) millis)/((double) consta));
Run Code Online (Sandbox Code Playgroud)