2013-05-13 38 views
1

如何將Double轉換爲Number,如下面的代碼所示?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 

其實這個代碼屬於從java.textChoiceFormat.java類。

+5

這表明你在某處有不同的'Double'類型或不同的'Number'類型。你可以嘗試使用'java.lang.Number'聲明類型和'return new java.lang.Double(bestNumber);' – 2013-05-13 06:08:18

+1

明確聲明我沒有在eclipse中得到任何這樣的錯誤 – 2013-05-13 06:08:35

+0

你可以把[SSCCE ](http://sscce.org) – Ashish 2013-05-13 06:14:26

回答

1

java.lang.Doublejava.lang.Number一個子類。因此,如果您從返回java.lang.Number的方法返回java.lang.Double,則發佈的代碼不應顯示任何編譯錯誤。

正如Jon Skeet指出的那樣,「你有不同的Double類型或不同的Number類型」。請仔細檢查,看看您是否使用java.lang.Doublejava.lang.Number

1

使用鑄造

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

你的情況

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

return n; 
+3

應該沒有必要這樣做。或者說 - 如果這個代碼可以工作,那麼原來的代碼應該可以工作。 – 2013-05-13 06:16:19

+0

我試過了,它顯示'不能將表單雙數轉換爲數字'。 – ajjukhot 2013-05-13 06:17:10

+1

@Sanjaya Double是Number的子類 – Ashish 2013-05-13 06:17:35

相關問題