2013-01-06 95 views
1

我正在學習在Android上編程移動應用程序。我的第一個應用程序是單位轉換器。 Everithing現在正在工作,但我有一個關於格式化數字的問題。我哈瓦該激活碼按鈕獲取文本並向appropriet輸出轉換:如何在Android上格式化數字

if (bPrevodZ.getText() == "milimeter"){ 
    if (bPrevodDo.getText()=="kilometer"){ 
     String PomocnaPremenna = jednotkaZ.getText().toString(); 
     double cisloNaPrevod = Double.parseDouble(PomocnaPremenna); 
     cisloNaPrevod = cisloNaPrevod*0.0000001; 
     vysledok.setText(Double.toString(cisloNaPrevod)); 
    } 

最終的結果是「cisloNaPrevod」,但我有問題表明,一些良好的格式。例如: 12345毫米= 0.0公里這是不錯的權利? :)

,但如果我轉換: 563287毫米= 0.05632869999999995這是不好的:)我需要它顯示0.0563287

THX任何幫助

+0

** **從來沒有比較字符串與''==,使用'.equals();'。爲什麼?閱讀[這個問題](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – jlordo

回答

4

使用的String.format:

String.format("%.6f", cisloNaPrevod); 
+1

我認爲這將是%.7f而不是%.6f,但正確但:) –

+0

Thx爲快速的答案,但我怎麼可以在我的代碼中使用它? :) – MichalCh

+0

使用它而不是你的Double.toString()調用 – Chris

2

如果您希望自己的號碼始終有6位有效數字,請使用

vysledok.setText(String.format("%.6g", cisloNaPrevod)); 

給出結果0.0563287

如果您想要舍入到6號的小數點後,使用

vysledok.setText(String.format("%.6f", cisloNaPrevod)); 

給出的結果0.056329

這裏是一個涵蓋數字格式一些很好的資源:

+0

Thx這正是我需要。 – MichalCh

1

如果它的東西,你要經常做,也許你應該使用DecimalFormat

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

然後調用:

df.format(someDoubleValue);