An 64-bit double can represent integer +/- 253 exactly
Given this fact I choose to use a double type as a single type for all my types, since my largest integer is unsigned 32-bit.
But now I have to print these pseudo integers, but the problem is they are also mixed in with actual doubles.
So how do I print these doubles nicely in Java?
I have tried String.format("%f", value)
, which is close, except I get a lot of trailing zeros for small values.
Here's an example output of of %f
232.00000000 0.18000000000 1237875192.0 4.5800000000 0.00000000 1.23450000
What I want is:
232 0.18 1237875192 4.58 0 1.2345
Sure I can write a function to trim those zeros, but that's lot of performance loss due to String manipulation. Can I do better with another format code?
EDIT
The answers by Tom E. and Jeremy S. are unacceptable as they both arbitrarily rounds to 2 decimal places. Please understand the problem before answering.
EDIT 2
Please note that String.format(format, args...)
is locale-dependent (see answers below).
new DecimalFormat("#.##").format(1.199); //"1.2"
As pointed in the comments, this is not the right answer to the original question.
That said, it is a very useful way to format numbers without unnecessary trailing zeros.