为什么java在超过Double.Max_Value时返回正无穷大?

use*_*888 3 java double

当我尝试执行此代码时,结果如何大于Double.MAX_Value?溢出/下溢是否会影响java中的双数据类型?

码:

   result = Double.MAX_VALUE * Double.MAX_VALUE;

   if (result > Double.MAX_VALUE) {
      // Some return statements.
   }
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 6

来自Java语言规范

浮点乘法的结果由IEEE 754算法的规则决定:

  • [...]
  • 如果产品的大小太大而无法表示,我们说操作溢出 ; 结果是无穷无尽的适当标志.

由于Double.MAX_VALUE * Double.MAX_VALUE太大而无法表现,其价值变为无穷大.