String cannot be converted to double 错误在函数中

String cannot be converted to double error in a function

我正在尝试在 x 为 NaN 时以字符串格式输出 NaN。但是,当 Double.isNaN 为真时,当我尝试 return string of "NaN" 时,控制台抛出 String cannot be converted to double 错误。我尝试使用 Double.parseDouble() 将字符串 r 解析为双精度但无济于事。

这是我的代码:

public static double heaviside(double x) {
    String r = "NaN";
    r = Double.parseDouble(r);
    double result;
    if (Double.isNaN(x)) return r;
    else if (x < 0.0) return result = 0.0;
    else if (x == 0.0) return result = 0.5;
    else return result = 1.0;
}

控制台输出

ActivationFunction.java:6: error: incompatible types: double cannot be converted to String r = Double.parseDouble(r); ^ ActivationFunction.java:8: error: incompatible types: String cannot be converted to double if (Double.isNaN(x)) return r; ^

"NaN" 不是 double,您不能将它转换为 double 而不是 return x 因为 Java return 是一个例外您的代码的第 2 行不会继续 运行 代码的其余部分

您正在尝试将 String 转换为 double 并将其值存储在 r 中,这是 String 的一种类型。

您应该创建另一个 double 类型的变量,并可以像这样存储该值:

public static double heaviside(double x) {
    String r = "NaN";
    double d = Double.parseDouble(r);
    double result;
    if (Double.isNaN(x)) return d;
    else if (x < 0.0) return result = 0.0;
    else if (x == 0.0) return result = 0.5;
    else return result = 1.0;
}

希望对您有所帮助。 编码愉快..!

您的问题来自于您尝试将 double 分配给 String 变量这一事实。 r 定义为 String and Double.parseDouble(r) returns double。如果您将其分配给 result,它将起作用,如下所示:double result = Double.parseDouble(r);

但是,首先不需要从 String 解析新的 double。你想 return NaNx == NaN。在这种情况下,您可以只 return x 因为 xNaN。不需要另一个变量、解析和所有这些。