我认为它在代码中非常自我​​解释。 显然,我不是一遍又一遍地评估同样的事情,它只是解释我的问题的示例数字。 我猜测它的上溢/下溢但我不知道如何处理它。

double d = (1 / (684985+157781));

System.out.println(d); // returns 0.0
System.out.println(Math.log(d)); // returns -Infinity.

===============>>#1 票数:8 已采纳

(1 / (684985+157781))是一个整数表达式,因此它将变为0 然后将零分配给double d ,为0.0

尝试将1更改为1.0以强制该表达式为浮点数,或者将1.0D强制为加倍。

===============>>#2 票数:7

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

double d = (1.0 / (684985.0+157781.0));

===============>>#3 票数:5

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

double d = (1 / (double)(684985+157781));

===============>>#4 票数:4

尝试使用double d = (1.0 / (684985+157781));

注意1.0部分:你想强制进行双重评估。

===============>>#5 票数:3

第一个表达式以整数运算计算。 要获得您期望的答案,您需要在浮点运算中计算它,因此:

double d = (1.0 / (684985.0+157781.0));

  ask by Cheetah translate from so

未解决问题?本站智能推荐: