Zahl formatieren

  • Antworten:7
Ralf S.
  • Forum-Beiträge: 420

05.06.2010, 18:00:24 via Website

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(2);
double zahl = 12.2345679;
nf.format( zahl );


Ergebnis: "12.23"

— geändert am 05.06.2010, 18:01:14

Good Day (Mitglied Nr. 19.869)

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

19.04.2011, 11:49:10 via Website

Erstmal Danke für den Snippet.
Aber bei mir klappt das nicht so ganz, ich hab die Variable a und möchte die auf 2 bzw. 1 Nachkommastelle runden:
1NumberFormat nf = NumberFormat.getNumberInstance();
2nf.setMinimumFractionDigits(0);
3nf.setMaximumFractionDigits(2);
4double zahl = a;
5nf.format( zahl );
Dann müsste, angenommen a = 18,514365468, die Variable zahl = 18,51 sein, oder?
Bei mir ist zahl aber genau das selbe wie a, also beide Variablen sind 18,514365468...
any ideas?

Antworten
Alexander R.
  • Forum-Beiträge: 1.148

19.04.2011, 11:54:59 via Website

Hallo luhu,
versuchs mal so:

1NumberFormat nf = NumberFormat.getNumberInstance();
2nf.setMinimumFractionDigits(0);
3nf.setMaximumFractionDigits(2);
4double zahl = 18,514365468;
5nf.format( zahl );

Gruß Alexander

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

19.04.2011, 12:15:13 via App

Hi,

danke, aber der Wert von a ist nicht statisch. Also geht es nicht, dass ich nur den Wert reinschreiben...

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

19.04.2011, 19:30:00 via Website

public final String format(double number)
-> feld.setText(nf.format(zahl)); liefert das gewünschte Ergebnis (es wird ja wohl um eine Ausgabe gehen, oder?)

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

19.04.2011, 20:40:08 via Website

sorry, aber ich komm damit jetzt nicht so ganz klar.
Kannst du mal ein Beispiel schreiben, mit der Variable a, die auf 2 Nachkommastellen gerundet werden soll? das wär super :)
Ich will das gerundete Ergebnis mit
1TextView textfeld = (TextView) findViewById(R.id.textfeld);
2textfekd.setText("" + a);
in einer TextView anzeigen lassen...

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

20.04.2011, 00:53:42 via Website

Ich bin jetzt nicht sicher, ob ich die Frage richtig verstanden habe, denn eigentlich steht schon alles da...

Dein ursprünglicher Code:

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(2);
double zahl = a;
nf.format( zahl );


ergänzt um die Zeilen deines letzten Postings:

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(2);
double zahl = a;
nf.format( zahl );
TextView textfeld = (TextView) findViewById(R.id.textfeld);
textfekd.setText("" + a);


ergeben nach dem Lesen meines letzten Postings:

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(2);
TextView textfeld = (TextView) findViewById(R.id.textfeld);
textfeld.setText(nf.format(a));


Was war daran jetzt unklar?


Als eigentlich C++ Entwickler würde ich das zwar so lösen:

textfeld.setText(String.format("%.2f", a));

aber dafür gibts vermutlich Haue von den Java-Gurus, aus welchem Grund auch immer :P

Ludwig H.

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

20.04.2011, 11:32:20 via App

achsoooo! super, Dankeschön! Werde das mal so ausprobieren :)

Edit: Super, hat funktioniert, dankeschöne!

— geändert am 20.04.2011, 12:00:20

Antworten