How do I round a double to 5 decimal places, without using DecimalFormat
?
You can round to the fifth decimal place by making it the first decimal place by multiplying your number. Then do normal rounding, and make it the fifth decimal place again.
Let's say the value to round is a double
named x
:
double factor = 1e5; // = 1 * 10^5 = 100000.
double result = Math.round(x * factor) / factor;
If you want to round to 6 decimal places, let factor
be 1e6
, and so on.
Whatever you do, if you end up with a double
value it's unlikely to be exactly 5 decimal places. That just isn't the way binary floating point arithmetic works. The best you'll do is "the double value closest to the original value rounded to 5 decimal places". If you were to print out the exact value of that double, it would still probably have more than 5 decimal places.
If you really want exact decimal values, you should use BigDecimal
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With