Wie mache ich das Java-Format zu einem Double-Format wie -3.2 anstelle von -3.1999999999999953?

8

Meine App produziert Double, wobei Double.toString () "-3.1999999999999953" produziert - während ich erwarte, dass es "-3.2" produziert.

Ich bekomme diese Doppel aus JSciences Amount#getEstimatedValue() .

Ich möchte keine beliebige Anzahl von Ziffern für die Genauigkeit festlegen, da ich nicht weiß, wie viele Ziffern wichtig sind, aber ich möchte nicht, dass sie Zahlen mit der Endung "99999999. *" erzeugt.

Wie kann ich Doubles in Strings ohne dieses Problem konvertieren?

    
sanity 15.12.2011, 17:20
quelle

3 Antworten

7

Empfohlene Lösung

%Vor%

Der Hack, der später im letzten Abschnitt dieses Posts vorgestellt wurde, war das erste, was einem beim Versuch, eine OP-Frage zu lösen, in den Sinn kam.

Dann fragte ein Freund, was ich mache und sagte, OP sei besser, BigDecimal zu benutzen und ich ging in den Facepalm-Modus.

Aber ich werde den Hack in diesem Post lassen, damit die Welt sehen kann, wie dumm ich manchmal sein kann.

Beim Drucken können Sie System.out.format verwenden.

Der folgende Ausschnitt wird den Wert von yourDecimal auf eine Dezimalstelle runden und dann den Wert ausgeben.

%Vor%

Ausgabe

%Vor%

Der dümmste Hack, der je geschrieben wurde

%Vor%

...

%Vor%

Ausgabe

%Vor%     
Filip Roséen - refp 15.12.2011, 17:23
quelle
4

Verwenden Sie BigDecimal :

%Vor%

Ausgabe:

%Vor%     
Sean Patrick Floyd 15.12.2011 17:26
quelle
3

Sie könnten es versuchen

Ссылка

Leicht "Schwergewicht", sollte aber den Trick machen. Einige Beispielverwendung bei:

DecimalFormat-Unterstrukturgrenze funktioniert nicht richtig

    
Brian 15.12.2011 17:23
quelle

Tags und Links