2011-06-21 122 views
1

可能重複:
Existing String to Double解析字符串到雙

我試圖字符串解析成雙層,我不知道這是否是做了正確的方式。如果有人能幫我檢查一下,並給出反饋,我會非常感激。

下面的代碼:

String amount = enterAmount.getText().toString(); 
    double subtotal = Double.valueOf(amount).doubleValue(); 

預先感謝您的盛情意見。

+0

歡迎StackOverflow上。當答案幫助你解決了問題時,你應該通過點擊答案旁邊的勾號來接受答案。 –

回答

3
String amount = enterAmount.getText(); 
double subtotal = Double.parseDouble(amount); 
7

你可以嘗試

double subtotal = Double.parseDouble(amount); 
3

你應該把這個包呼叫周圍try-catch塊和處理NumberFormatException如果字符串不能被解析爲Double將被拋出。

1

你也可以試試這個。

double subtotal = Double.parseDouble(amount); 
1

我做什麼,是(使用JFormattedTextFieldJTextField時)更換所有的逗號的由點和刪除空格:

String amount = enterAmount.getText(); 
amount = amount.replace(",",".").replace(" ", ""); 
double subtotal = Double.parseDouble(amount); 

這意味着下面的輸入將工作:

12 
1,2 
1.2 
200 000 
200 000,01 

逗號用於很多歐洲國家:Wikipedia

藍色=點;
Green =逗號;
紅色= Momayyez(/)

1

你應該使用一些邏輯,以確定它是否是一個有效的數字。下面是用於測試整數的函數:

 
public static int validateInteger(String number) 
{ 
    int i = -1; 

    try { 
    i = Integer.parseInt(number); 
    } 
    catch (NumberFormatException nfe) 
    {} 
    catch (NullPointerException npe) 
    {} 

    return i; 
} 

你的情況,你必須改變的Integer.parseInt()函數到任何你想要的類型。

+2

如果輸入'-1'並且這是有效的,該怎麼辦? –

+0

該功能在您無法更改它的意義上不是靜態的。如果你想允許數字-1那麼這當然是非常好的。選擇另一個返回值,即任何數字,輸入正確的數字的概率非常低。我使用這個函數來測試一個端口號是否有效,並且由於負數不能用作端口號,所以-1就是一個很好的指示。 –

+0

你是對的,可以使用任何無效值。你可以返回一個long,或者你可以拋出NumberFormatException,讓調用者捕獲它而不是檢查值。 –

0

如果你想成爲國際,你應該這樣做:

DecimalFormat.getNumberInstance(Locale).parse(numberAsString).doubleValue()