我是Java编程语言的新手,下面提出了一个愚蠢的问题。
在java中执行1/0将生成运行时异常,因为该值未定义。
但是1.0 / 0.0就可以了,值是无限的。
双数据类型有什么特别之处吗?可以帮助理解一个很好的解释?提前谢谢。
答案 0 :(得分:7)
双数据类型有什么特别之处吗?
是的,double
可以代表无穷大(可以float
),而int
可以代表无穷大。浮点类型遵循IEEE 754,它允许有符号的无穷大值,以及"不是数字" (NaN)值,例如试图获得-1的平方根。
来自JLS 15.17.2(分部):
如果整数除法中的除数值为0,则抛出ArithmeticException。
和
浮点除法的结果由IEEE 754算法的规则决定:
- ...
- 将零除以零导致NaN;零除以任何其他有限值导致有符号零。该标志由上述规则决定。
- 将零非零有限值除以零会产生有符号无穷大。