Ausgabe von Fließkommazahlen lesbarer machen, geht das?

  • 7 Antworten
  • Neuester Beitrag
Diskutiere Ausgabe von Fließkommazahlen lesbarer machen, geht das? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Bergmann2016

Bergmann2016

Neues Mitglied
Hallo,

ich bin noch recht neu bei der Androidprogrammierung. Habe am Wochenende jedoch fast erfolgreich meine erste selbstständig programmierte App fertig bekommen. Nun hat die App einen kleinen Schönheitsfehler. Wenn sie eingegebene Werte umrechnet, ach so die App rechnet verschiedene Drücke um, dann wird mir die Ausgabe mit Exponenten dargestellt. Also 0,00001 steht dann 1E-5 . Mir ist bewusst, dass das angezeigte Ergebnis richtig ist. Jedoch erschwert es die Lesbarkeit.

Gibt es eine Möglichkeit die Darstellung einfach zu ändern? Ich dachte dem EditText; wo die Eingabe stattfindet, mehr anzuzeigende Stellen einzuräumen. Dann fiel mir aber ein, dass es wohl nichts bringt, da die Berechnung und die Ausgabe ja nicht in diesem EditText statt findet.

Ich habe seit gestern Abend nun Google befragt und hier wurde ich auch nicht fündig. Ich freue mich über jede Hilfreiche Antwort.

private void umrechnen(RadioButton rb) {
double eingabe1 = readTextView(R.id.tvn_umrechnung_eingabe1);

try {
String Verlauf = leseTextView(R.id.tv_verlauf);

switch (rb.getId()) {
case R.id.rb_PaN:
TextView Ergebnis2 = (TextView) findViewById(R.id.tv_umrechnung_ergebnis);
Ergebnis2.setText(Double.toString((eingabe1 * 0.0001)) + " N/cm²");

TextView Verlauf2 = (TextView) findViewById(R.id.tv_verlauf);
Verlauf2.setText((Verlauf + Double.toString((eingabe1 * 0.0001))) + " N/cm²");

break;
}
} catch (Exception exception) {

}
}

Zum Programmablauf: Der User wählt mittels RadioButton was er umrechnen möchte. In diesem Fall eben Pascal in N/cm² (PaN). Dann wird eben diese Methode aufgerufen und das unschön zu lesende Ergebnis ausgegeben.. In der im catch soll später noch ein Toast ausgegeben werden. Jedoch mir fallen keine passenden Texte ein ^^, weshalb er eben noch leer ist.
 
swa00

swa00

Moderator
Teammitglied
Hallo,

versuche mal diesen Weg :

Ergebnis2.setText(String.format ("%05.05f N/cm²",(float) eingabe1));
(Hier 5 stellen vor dem Komma und 5 dahinter) (gefüllt mit Nullen)



lg
Stefan
 
Zuletzt bearbeitet:
Bergmann2016

Bergmann2016

Neues Mitglied
Ganz herzlichen Dank

Das funktioniert

Kann mir auch jemand erklären was nun der Unterschied zwischen ".format" und ".toString" ist? Oder mir wenigstens einen Link zu einer Erklärung posten?

Nochmal Danke
 
swa00

swa00

Moderator
Teammitglied
Wir nehmen mal an du hast die die zahl 123

int testzahl = 123;

mit .toString kannst du z.b. einen Zahlenwert (int) in einen String wandeln

String test_str_1 = Integer.toString(testtzahl);
Ausgabe : 123


und wie in meinem Beispiel aufgezeigt , kannst du eine Formatierung des Strings ausführen

String test_str_2 = String.format("%05d",testzahl);
Ausgabe : 00123

Formatter | Android Developers

Angekommen ??? :)

lg
Stefan
 
Zuletzt bearbeitet:
Bergmann2016

Bergmann2016

Neues Mitglied
Also bestimme ich mit .format nur die darstellung der Zahl. Wenn ich also über 5 Kommastellen anzeigen möchte, treten wieder Probleme auf? Teste ich gleich.

Danke
 
swa00

swa00

Moderator
Teammitglied
Na du hast doch explizit nach der darstellung gefragt , oder ? :)
(Weil die Ausgabe des reinen doublewertes schei*** ausgesehen hat )


nein , du kannst auch %010, nehmen - so wie du magst.

willste z.b. nur zwei stellen hinter dem Komma anzeigen ( Geld) dann z.b. %.02f
dann wäre
1234,56766453 = 1234,56
342553425,04535346 = 342553425,04;

und bei %010.02f

1234,56766453 = 0000001234,56
342553425,04535346 = 0342553425,04;
 
Zuletzt bearbeitet:
Bergmann2016

Bergmann2016

Neues Mitglied
Das ist richtig und die Sarstellung ist was ich wollte

Ich frug jetzt auch nur um sicher zu sein das ich deine Erklärung verstanden habe

Es sollte für meine Zwecke reichen, Drücke jenseits von 0,00001 N/cm2 sollten vernachlässigbar sein

Im Zweifelsfall änder ich die Eingabebedingung.
 
swa00

swa00

Moderator
Teammitglied
und schon wieder eine gute Tat für heute :)