1

如何在 Java 中将 Double 转换为 Number,如下面的代码所示?

public Number parse(String text, ParsePosition status) {
    // find the best number (defined as the one with the longest parse)
    int start = status.index;
    int furthest = start;
    double bestNumber = Double.NaN;
    double tempNumber = 0.0;
    for (int i = 0; i < choiceFormats.length; ++i) {
        String tempString = choiceFormats[i];
        if (Misc.regionMatches(start, tempString, 0, tempString.length(), text)) {
            status.index = start + tempString.length();
            tempNumber = choiceLimits[i];
            if (status.index > furthest) {
                furthest = status.index;
                bestNumber = tempNumber;
                if (furthest == text.length()) break;
            }
        }
    }
    status.index = furthest;
    if (status.index == start) {
        status.errorIndex = furthest;
    }
    int c= 0;
    return new Double(bestNumber); 
}

但在 Eclipse 中它显示

Type mismatch: cannot convert from Double to Number

实际上这段代码属于包中的ChoiceFormat.javajava.text

4

2 回答 2

2

使用铸造

Double d=new Double(2);
Number n=(Number)d;

在你的情况下

Double d=new Double(bestNumber);
Number n=(Number)d;

return n;
于 2013-05-13T06:13:02.000 回答
2

java.lang.Double是 java.lang.Number 的子java.lang.Double因此,如果您从返回的方法返回 a,则发布的代码不应显示任何编译错误java.lang.Number

正如 Jon Skeet 指出的那样,“你在某处有不同的 Double 类型或不同的 Number 类型”。请仔细检查您是否使用java.lang.Doubleand java.lang.Number

于 2013-05-13T06:20:10.273 回答