To, co chciałbym, to metoda konwersji podwójnego na ciąg znaków, który zaokrągla metodę pół-w górę - tj. Jeśli liczba dziesiętna do zaokrąglenia wynosi 5, zawsze zaokrągla w górę do następnej liczby. Jest to standardowa metoda zaokrąglania, której większość ludzi oczekuje w większości sytuacji.
Chciałbym również, aby wyświetlane były tylko cyfry znaczące - tzn. Nie powinny być żadnych zer końcowych.
Wiem, że jedną z metod jest zrobienie tego String.format
:
String.format("%.5g%n", 0.912385);
zwroty:
0.91239
co jest świetne, jednak zawsze wyświetla liczby z 5 miejscami dziesiętnymi, nawet jeśli nie są znaczące:
String.format("%.5g%n", 0.912300);
zwroty:
0.91230
Inną metodą jest użycie DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
zwroty:
0.91238
Jednak, jak widać, wykorzystuje to półokrągłe zaokrąglanie. Oznacza to, że zaokrągli w dół, jeśli poprzednia cyfra jest parzysta. Chciałbym to:
0.912385 -> 0.91239
0.912300 -> 0.9123
Jaki jest najlepszy sposób na osiągnięcie tego w Javie?