Was ich möchte, ist eine Methode zum Konvertieren eines Double in eine Zeichenfolge, die mit der Hälfte-up-Methode rundet - d.h. wenn die Dezimalzahl zu runden ist 5, es rundet immer auf die nächste Zahl. Dies ist die Standard-Rundungsmethode, die die meisten Menschen in den meisten Situationen erwarten.
Außerdem möchte ich, dass nur signifikante Ziffern angezeigt werden, d. h. es sollten keine Nullen am Ende stehen.
Ich weiß, dass eine Methode, dies zu tun, in der Verwendung der String.format
Methode:
String.format("%.5g%n", 0.912385);
zurück:
0.91239
was großartig ist, aber es zeigt Zahlen immer mit 5 Dezimalstellen an, auch wenn sie nicht signifikant sind:
String.format("%.5g%n", 0.912300);
zurück:
0.91230
Eine andere Methode ist die Verwendung der DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
zurück:
0.91238
Wie Sie sehen können, wird dabei jedoch halbwegs gerade gerundet. Das heißt, es wird abgerundet, wenn die vorherige Ziffer gerade ist. Was ich möchte, ist dies:
0.912385 -> 0.91239
0.912300 -> 0.9123
Wie lässt sich dies in Java am besten erreichen?