2012-11-02 11 views
8

Ich mache ein grafisches Taschenrechner-Programm in Java und habe eine Methode, die eine Operation basierend auf Benutzereingaben ausführt und ein Double zurückgibt, um in einer JTextField angezeigt zu werden. Ich möchte jedoch, dass das Ergebnis als ganze Zahl ohne folgende ".0" angezeigt wird, wo keine signifikanten Stellen hinter dem Dezimalpunkt stehen, aber bei Bedarf immer noch Dezimalpunkte anzeigen. Was ist der effizienteste Weg, dies zu tun?Keine Dezimalstellen angezeigt, wenn double eine ganze Zahl ist?

+1

Vielleicht in einen String konvertieren und manipulieren es eine bedingte, indem sie, wenn die hinteren zwei Zeichen sind '.0'? – kush

+0

Wie würde ich eine Bedingung schreiben, um die nachfolgenden Zeichen zu überprüfen? – Zero

+1

Es gibt eine bessere Antwort auf die Frage, die [DecimalFormat] (http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html) verwendet. Bitte sehen Sie die Antwort von Reimeus unten. – kush

Antwort

8

Sie DecimalFormat zur Unterdrückung der hinteren Zeichen verwenden können, z.B .:

DecimalFormat format = new DecimalFormat("#.##"); 
double doubleFromTextField = Double.parseDouble(myField.getText()); 
System.out.println(format.format(doubleFromTextField)); 
+0

Das hilft bei der Formatierung der Ausgabe in allen Fällen, aber ich möchte nur die Nachkommastellen eliminieren, wenn die Nachkommastelle ".0" ist. Wie würde ich eine Bedingung schreiben, um die Ausgabe nur zu formatieren, wenn das Double eine ganze Zahl ist? Danke für Ihre Hilfe. – Zero

+2

Dieses Beispiel macht tatsächlich das, wonach Sie fragen. Bedeutende (nicht null) Ziffern nach dem Dezimalpunkt werden angezeigt, so dass keine zusätzlichen Prüfungen erforderlich sind. – Reimeus

+1

Ich bin so dumm, ich habe nicht bemerkt, dass es die richtige Antwort gedruckt hat, die ich in die Konsole anstelle von JTextField wollte. Danke Reimeus! – Zero