在Java中,(个/ 0)抛出ArithmeticException,但是(个/ 0.0)=无穷大。 为什么会出现这种情况?

有帮助吗?

解决方案

由于IEEE-754浮点数有无穷大的表示,而整数则没有。

在换句话说,在每int位模式代表正常整数;浮点值,而更复杂的带有+/-无穷大“而不是数字”(NaN)值,归一化值,低于正常的值等。

其他提示

从此处

在IEEE浮点标准,由几乎所有的现代处理器都支持,指定每次浮点算术运算,包括被零除,具有定义良好的结果。符号零标准载体,以及无穷大,NaN(非数字)。有两个零,0(正零)和-O(负零)和此删除分割时任何不确定性。在IEEE 754算术,一个÷0是正无穷当a是当a为负正,负无穷大和NaN当a =±0。无穷大符号除以当-0代替改变。

整数除以零通常从浮点由于没有用于结果没有整数表示的处理不同。一些处理器产生一个异常时,试图除以零的整数,虽然别人只会继续产生为师不正确的结果。结果取决于分裂是如何实现的,并且可以是零,或有时可能的最大整数。

您也可以检查哪些说JLS:

15.17.2除法运算符,点击 在另一方面,如果除数的一个整数除法的值是0,那么, 则抛出ArithmeticException。

一个浮点除法的结果是由规格决定 IEEE算术: 如果结果不是NaN,则结果的符号为正,如果两个操作数有 相同的符号,负,如果两边有不同的符号。结果 由零所导致符号的无穷非零有限值的除法。 符号由上述的规则来确定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top