2013-09-26 18 views
0

我似乎無法得到我的頭。如果已經嘗試了以下方法:java Double.valueOf()返回一位小數的數字

DecimalFormat df = new DecimalFormat("00000.00"); 

DecimalFormat df = new DecimalFormat("######.##"); 

但是下面這行總是生成和IllegalArgumentException。

double price = Double.valueOf(df.format(((EditText) view 
       .findViewById(R.id.edit_item_price)).getText().toString())); 
// Sample input passed is value of 200 or some other whole number. 
item.setPrice(price); 

這沒有意義,因爲我只在這個論壇中複製了明顯的解決方案。你們大多數人都使用format()來工作。

最初,我沒有這些代碼行。在獲得商品價格後,我只需調用setPrice()方法。這工作。但是,Double.valueOf()具有隻使用一個小數位的惡習。

例如通過200.我的項目對象中獲得200.0。我想通過使用DecimalFormat我可以防止這個,但它看起來這使我更加頭痛。

+0

顯然,這段代碼作爲一個獨立的java應用程序工作。它只有在與android應用程序一起使用時纔會失敗。 – Chad

回答

1

當你說你通過200,你得到200.0,你的意思是你得到它的雙重價值?如果是這樣,那沒關係 - 這是一個數字,200 = 200.0的雙數值。

+0

好吧,看來我正在對一些毫無意義的事情大驚小怪。我在捕捉數據到數據庫的途中,意識到我不需要這樣做。所以我剛剛格式化數字,因爲它被從數據庫中拉出並在屏幕上呈現。你的建議有幫助。謝謝 – Chad

0

format(...)將double值轉換爲String值。你反過來了。這就是爲什麼你得到例外。

如果價格變量實際上是一個雙重你應該做

double price = Double.valueOf(((EditText) view .findViewById(R.id.edit_item_price)).getText().toString())

但是我想你想的是,價格是一個字符串,那麼你應該將文本從EditText上轉換爲雙和雙回到一個類似的字符串new DecimalFormat("0.00")

+0

對不起,我沒有準確地複製我的代碼,我補充說缺少valueOf()。那裏的主要問題是格式本身會失敗。即使你聲明瞭一個不同的變量來保存它。 – Chad