2016-05-04 9 views
1

Ich versuche, an die Gemeinde zurück zu geben, ein bisschen mehr ...Die richtige Anzahl von Dezimalstellen ausgeben? (Printf) - JAVA

Sagen wir x, meine Doppel Variable, hat manchmal unterschiedliche Mengen an Dezimalstellen. (Ex. 1.2, 1.23, 1.234) Aber ich möchte nur die minimale Anzahl von Dezimalstellen, die die Variable hat, drucken, ohne all diese 0 am Ende. Wie mache ich das?

+2

Und was war falsch mit 'double x = 2,10; System.out.println (x); '? –

+0

Oder verwenden Sie 'printf()', verwenden Sie '% s' anstelle von'% f'. – Andreas

+0

Ich hatte schon alles in einem 'System.out.printf();' also wollte ich es so behalten. : P @ElliottFrisch Plus, sollte mehr verwendet werden, z. B. das Zeichnen einer Zeichenfolge in einen JFrame, die beim Anhängen von Text nicht formatiert werden kann. – Kaelinator

Antwort

0

Hier ist, was ich kam mit (es ist zu einfach, kein Kredit erforderlich):

public static void main(String[] args) { 

    double x = 100.512f; 

    //no decimal places 
    if (x % 1 == 0) { 
    System.out.printf("x = %.0f", (float) x); 
    //one decimal place 
    } else if ((x * 10) % 1 == 0) { 
    System.out.printf("x = %.1f", (float) x); 
    //two decimal places 
    } else if ((x * 100) % 1 == 0) { 
    System.out.printf("x = %.2f", (float) x); 
    //three decimal places 
    } else if ((x * 1000) % 1 == 0) { 
    System.out.printf("x = %.3f", (float) x); 
    } 
    //and so on... 
} 
+0

Sie werden nie in der Lage sein, das oben genannte erfolgreich zu machen. Zum Beispiel, was sollte die Ausgabe für x = 0,1502 sein? für x = 0.15002? für .01500002? für 0.15000000000000002? Wie können Sie das von dem, was Sie wollten, von x = .05 + .05 + .05 unterscheiden, da ihre internen Repräsentationen identisch sind? – FredK

0

Haben Sie doppelt nur verwenden? BigDecimal kann mit der Skalierung verwendet werden, sodass nur die erforderliche Anzahl an Dezimalstellen angezeigt wird.

Verwandte Themen