Java中的双精度除以零

Java中的双精度除以零,java,divide-by-zero,arithmeticexception,Java,Divide By Zero,Arithmeticexception,可能重复: 为什么Java中的以下语句不会报告算术异常 double d = 1.0/0; 简言之:浮点数可以表示无穷大(甚至可以表示产生非数字值的操作),因此导致无穷大的操作(例如除以0)是有效的 在Mohammod Hossain的回答的基础上进行扩展,并且,当“发生异常算术条件时”抛出算术异常。对于整数,除0就是这种情况,但是对于浮点数(floats和doubles),存在正表示和负表示 例如, public class DivZeroFun { public static

可能重复:

为什么Java中的以下语句不会报告算术异常

double d = 1.0/0;

简言之:浮点数可以表示无穷大(甚至可以表示产生非数字值的操作),因此导致无穷大的操作(例如除以0)是有效的

在Mohammod Hossain的回答的基础上进行扩展,并且,当“发生异常算术条件时”抛出算术异常。对于整数,除0就是这种情况,但是对于浮点数(
float
s和
double
s),存在正表示和负表示

例如,

public class DivZeroFun {

    public static void main(String args[]) {

        double f = 5.0;
        System.out.println(f / 0);
        double f2 = -5.0;
        System.out.println(f2/0);
    }
}
此代码将打印“Infinity”,然后打印“-Infinity”作为其答案,因为“Infinity”实际上是Java编码的
float
s和
double
s的可接受值

此外,来自:

浮点表示通常包括+inf、-inf甚至“nota” 编号”。整数表示不需要。你看到的行为不是 Java所独有的,大多数编程语言都会做类似的事情, 因为浮点硬件(或低级库)就是这样的 做

再次从论坛帖子:

因为IEEE浮点数标准已经定义了 正无穷大和负无穷大的值,以及特殊的“非a” “数字”案例。请参阅java.lang.Float和java.lang.Double中的contant 详情请参阅


因为它不是整数除法。相关:@Mysticial当然,但我想知道为什么只有整数除以零会导致异常!:-)这可能是Java设计者的一个问题。但这可能是因为整数除以零会触发硬件异常。但是浮点除以零只返回一个
INF
NaN
。。。。两个不能在整型字段中表示的值。