我该如何评估这个等式?

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)

sme*_*ola 8

(1 / (684985+157781))是一个整数表达式,所以它会出现0.然后零被分配给double d,as 0.0.

尝试更改1to 1.0以强制该表达式为浮点数,或1.0D强制它加倍.


duf*_*ymo 7

另一个人通过整数除法完成:

double d = (1.0 / (684985.0+157781.0));
Run Code Online (Sandbox Code Playgroud)


mal*_*ouk 5

不,在Java中如果使用整数,除法的结果将再次为整数,您必须将至少一个操作数转换为double.

double d = (1 / (double)(684985+157781));
Run Code Online (Sandbox Code Playgroud)