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

时间:2017-10-23 09:48:44

标签: java

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

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

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

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

1 个答案:

答案 0 :(得分:7)

  

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

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

来自JLS 15.17.2(分部):

  

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

  

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

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