Was ich möchte, ist eine Methode, um ein Double in eine Zeichenfolge umzuwandeln, die mit der Half-Up-Methode rundet. Wenn also die zu rundende Dezimalstelle 5 ist, wird immer auf die nächste Zahl gerundet. Dies ist die Standardmethode zum Runden, die die meisten Menschen in den meisten Situationen erwarten.
Ich möchte auch, dass nur signifikante Ziffern angezeigt werden - dh es sollten keine nachgestellten Nullen vorhanden sein.
Ich weiß, dass eine Methode, dies zu tun, darin besteht, die String.format
Methode zu verwenden:
String.format("%.5g%n", 0.912385);
kehrt zurück:
0.91239
Das ist großartig, zeigt jedoch immer Zahlen mit 5 Dezimalstellen an, auch wenn sie nicht signifikant sind:
String.format("%.5g%n", 0.912300);
kehrt zurück:
0.91230
Eine andere Methode ist die Verwendung von DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
kehrt zurück:
0.91238
Wie Sie jedoch sehen können, wird eine halbgleichmäßige Rundung verwendet. Das heißt, es wird abgerundet, wenn die vorherige Ziffer gerade ist. Was ich möchte, ist Folgendes:
0.912385 -> 0.91239
0.912300 -> 0.9123
Was ist der beste Weg, um dies in Java zu erreichen?