How to round a number to n decimal places in Java -
what method convert double string rounds using half-up method - i.e. if decimal rounded 5, rounds previous number. standard method of rounding people expect in situations.
i significant digits displayed - i.e. there should not trailing zeroes.
i know 1 method of doing use string.format method:
string.format("%.5g%n", 0.912385); returns:
0.91239 which great, displays numbers 5 decimal places if not significant:
string.format("%.5g%n", 0.912300); returns:
0.91230 another method use decimalformatter:
decimalformat df = new decimalformat("#.#####"); df.format(0.912385); returns:
0.91238 however can see uses half-even rounding. round down if previous digit even. i'd this:
0.912385 -> 0.91239 0.912300 -> 0.9123 what best way achieve in java?
use setroundingmode, set roundingmode explicitly handle issue half-even round, use format pattern required output.
example:
decimalformat df = new decimalformat("#.####"); df.setroundingmode(roundingmode.ceiling); (number n : arrays.aslist(12, 123.12345, 0.23, 0.1, 2341234.212431324)) { double d = n.doublevalue(); system.out.println(df.format(d)); } gives output:
12 123.1235 0.23 0.1 2341234.2125
Comments
Post a Comment