Java double to string with specific precision
double, format, java, string
Solution
Use `DecimalFormat`: `new DecimalFormat("#.0#####").format(d)`.
This will produce numbers with 1 to 6 decimal digits.
Since `DecimalFormat` will use the symbols of the default locale, you might want to provide which symbols to use:
//Format using english symbols, e.g. 100.0 instead of 100,0
new DecimalFormat("#.0#####", DecimalFormatSymbols.getInstance( Locale.ENGLISH )).format(d)
In order to format 100.0 to 100, use the format string `#.######`.
Note that `DecimalFormat` will round by default, e.g. if you pass in `0.9999999` you'll get the output `1`. If you want to get `0.999999` instead, provide a different rounding mode:
DecimalFormat formatter = new DecimalFormat("#.######", DecimalFormatSymbols.getInstance( Locale.ENGLISH ));
formatter.setRoundingMode( RoundingMode.DOWN );
String s = formatter.format(d);
Problem
I would like to convert `double` into `String`. I want it to have as few digits as possible and maximally 6. So I found `String.format("%.6f", d)` which converts my `100.0` into `100.000000`. Max precision works correctly, but I would like it to be converted to `100` (minimum precision). Have you got any idea what method is working like that?