【问题标题】:Java: Can't find symbolJava:找不到符号
【发布时间】:2015-09-20 05:00:58
【问题描述】:

在 Javadoc 中是这样写的:

public static String toString(double d)

返回双参数的字符串表示。下面提到的所有字符都是ASCII字符。

如果参数为 NaN,则结果为字符串“NaN”。

但是当我编译下面的代码时,它给出了错误:找不到符号 NaN

String intStr2 =Double.toString(NaN); 

【问题讨论】:

  • infinity 的值是多少?
  • 如果编译器抱怨符号 NaN,那么错误是在提到 NaN 的代码上吗?你确定错误在那条线上吗?向我们展示更多代码!
  • Cant find symbol NaN 表示您有一个名为 NaN 的变量的引用,但您尚未声明。
  • 我编辑了 NaN 应该表示双精度类型

标签: java tostring nan


【解决方案1】:

错误 NaN 是“不是数字”。你必须先定义它。

String intStr2 = Double.toString(Double.NAN);

你可以把它打印出来,它应该会打印出来。对于无穷大,您必须使用(正负,可互换。)

String intStr2 = Double.toString(Double.POSITIVE_INFINITY);
System.out.print(intStr2);

应该打印出 Infinity

【讨论】:

    【解决方案2】:

    Double.NaNDouble.java 中定义为 (ref jdk8)

    /**
     * A constant holding a Not-a-Number (NaN) value of type
     * {@code double}. It is equivalent to the value returned by
     * {@code Double.longBitsToDouble(0x7ff8000000000000L)}.
     */
    public static final double NaN = 0.0d / 0.0;
    

    而且很好的转换成字符串“NaN”

    String intStr2 =Double.toString(Double.NaN); 
    System.out.println(intStr2);
    

    【讨论】:

      【解决方案3】:

      由于没有定义NaN,所以会抛出编译错误,用下面的方法来克服,

      String intStr2 = Double.toString(Double.NaN);
      

      【讨论】:

      • @Satish String intStr2 =Double.toString(Double.infinity); String intStr2 =Double.toString(Double.Infinity);再次给出同样的错误
      • @Ronaldo7 没有什么叫做 Double.infinity 或 Double.Infinity 这就是你收到错误的原因。如果要检查无穷大,请使用以下行 Double.toString(Double.POSITIVE_INFINITY);
      • 请参阅以下 Oracle 文档以了解可用的内容 - docs.oracle.com/javase/7/docs/api/java/lang/Double.html。希望这会有所帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多