Java 双师积极性

Java double division positiveness

为什么这个 java 代码会产生正无穷大?

    double d = 10.0 / -0; 

    System.out.println(d);
    if (d == Double.POSITIVE_INFINITY) 
        System.out.println("Positive Infinity");
    else 
        System.out.println("Negative Infinity");

负零等于零。因此,

double d = 10.0 / -0;

等同于

double d = 10.0 / 0;

这是正无穷大。

另一方面,如果您有:

double d = 10.0 / -0.0;

你会得到负无穷大(因为现在第二个值是双精度值,它区分 positive/negative 零)。

虽然double区分正零和负零,但int不区分。因此,当您将值为 0 的 int 转换为 double 时,您总是得到“正零”。

-0 是一个 int,它的值为 0。

除以“负零”得到负无穷大。为此,您需要将除数指定为 double(而不是 int):

    double d = 10.0 / -0.0;

    System.out.println(d);
    if (d == Double.POSITIVE_INFINITY) {
        System.out.println("Positive Infinity");
    } else {
        System.out.println("Different from Positive Infinity");
    }
    if (d == Double.NEGATIVE_INFINITY) {
        System.out.println("Negative Infinity");
    } else {
        System.out.println("Different from Negative Infinity");
    }

输出:

-Infinity
Different from Positive Infinity
Negative Infinity

这一输出是
double d = 10.0 / -0; ===>正无穷大

但是如果你需要得到 Negative Infinity 作为输出,你可以改变这个代码.....

double d = 10.0 / -0.0;

现在,您可以获得“负无穷大”作为输出。

原因 --->(数据类型。 首先你使用 double/int.... 第二个选项是 double/double....... )