【问题标题】:negative infinity when using JAVA Math library使用 JAVA 数学库时的负无穷大
【发布时间】:2014-02-01 13:20:54
【问题描述】:

我知道当变量为正零或负零时,Math.log() 的结果将是负无穷大。现在我的问题是为什么这段代码返回负无穷大?!

System.out.println((0.5 / Math.log(3600)* Math.log(9 / 60)+ 0.5);

但是当我使用

System.out.println((0.5 / Math.log(3600)* Math.log(0.15)+ 0.5);

答案是正确的。是什么导致了这个问题,我该如何解决?!

【问题讨论】:

  • System.out.println(9/60);
  • 返回 0 值!!为什么?!!!
  • int 除以 int,尝试制作 9.0/60,它应该可以工作
  • 因为 Java 中的 int / int 进行整数除法 (JLS §15.17 "Multiplicative operators"),而不是浮点数。至少有一个参数必须是 floatdouble 才能进行 FP 除法。

标签: java math


【解决方案1】:

Math.log(9 / 60) 等于 Math.log(0),即 -Infinity。

您可以改用 Math.log(9.0/60)。

【讨论】:

  • 如何将其更改为 9/60 的实际双精度值?
  • 你应该使用 9.0 / 60
  • 解释运算符重载和算术提升。所有这些都适用于此,对于完整有效的答案至关重要。
猜你喜欢
  • 2013-11-29
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 2017-08-19
  • 2020-06-23
  • 2015-03-22
  • 1970-01-01
相关资源
最近更新 更多