2013-01-06 47 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);