java中1/0和1.0/0.0之间的差异

Har*_*ood 0 java

我是Java编程语言的新手,下面提出了一个愚蠢的问题.

在java中执行1/0将生成运行时异常,因为该值未定义.

但是1.0/0.0就可以了,价值是无限的.

双数据类型有什么特别之处吗?可以帮助理解一个很好的解释?提前致谢.

Jon*_*eet 7

双数据类型有什么特别之处吗?

是的,double可以代表无限(可以float),int但不能.浮点类型遵循IEEE 754,它允许有符号的无穷大值,以及"非数字"(NaN)值,例如尝试获得-1的平方根.

来自JLS 15.17.2(分部):

如果整数除法中除数的值为0,则抛出ArithmeticException.

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

  • ...
  • 将零除以零导致NaN; 零除以任何其他有限值导致有符号零.该标志由上述规则确定.
  • 将零非零有限值除以零会产生有符号无穷大.