Che*_*tah 3 java overflow underflow
我认为它在代码中非常自我解释.显然,我不是一遍又一遍地评估同样的事情,它只是解释我的问题的示例数字.我猜测它的上溢/下溢但我不知道如何处理它.
double d = (1 / (684985+157781));
System.out.println(d); // returns 0.0
System.out.println(Math.log(d)); // returns -Infinity.
Run Code Online (Sandbox Code Playgroud)
(1 / (684985+157781))是一个整数表达式,所以它会出现0.然后零被分配给double d,as 0.0.
尝试更改1to 1.0以强制该表达式为浮点数,或1.0D强制它加倍.
不,在Java中如果使用整数,除法的结果将再次为整数,您必须将至少一个操作数转换为double.
double d = (1 / (double)(684985+157781));
Run Code Online (Sandbox Code Playgroud)