import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class RoundDouble {
public double round1(double input, int scale) {
BigDecimal bigDecimal = new BigDecimal(input).setScale(scale, RoundingMode.HALF_EVEN);
return bigDecimal.doubleValue();
}
public double round2(double input) {
return Math.round(input * 100) / 100.0d;
}
public double round3(double input) {
DecimalFormat df = new DecimalFormat("#.00");
return Double.parseDouble(df.format(input));
}
public static void main(String[] args) {
RoundDouble rd = new RoundDouble();
System.out.println(rd.round1(9232.129394d, 2));
System.out.println(rd.round2(9232.129394d));
System.out.println(rd.round3(9232.129394d));
}
}
Precision and scale for a Double in java
Carvia Tech  August 03, 2020  2 min read  416 views
Firstly let us understand the difference between Precision and Scale.
If the number is 9232.129394, then:
 Precision

represents the total number of digits in unscaled value i.e. for the number 9232.129394, the precision is 4 + 6 = 10
In special case when number is 0, precision is 1.
 Scale

Scale can be negative, zero or a positive value.
When scale is positive, it represents the number of digits to the right of the decimal point i.e. 6 in above case (.129394)
When scale is negative, the unscaled value of the number is multiplied by ten to the power of negation of scale. For example, a scale of 2 means the unscaled value is multiplied by 100.
Some examples of precision and scale are:
Number  Precision  Scale 

99.99 
4 
2 
9999999999 
10 
0 
99999.999 
8 
3 
99999000 
5 
3 
0.00001 
1 
5 
You would never want to lose the precision of the number as it will change the value by a large amount. If you still want to lose the precision simply divide the number by 10 to the power precision.
Set scale in Java
There are multiple ways in Java to round the double value to certain scale, as mentioned in the below example,
Outcome will be same in all the approaches, but the first method of rounding using BigDecimal should be preferred in most scenarios.
Top articles in this category:
 What is Double Checked Locking Problem in MultiThreading?
 Submit Form with Java 11 HttpClient  Kotlin
 What do you understand by Java Memory Model?
 Is Java Pure Object Oriented Language?
 Comparable vs Comparator in Java
 What is volatile keyword in Java
 Custom Thread pool implementation in Java
Find more on this topic:
Core Java
Core Java  OOP Concepts, Garbage Collection, Multithreading, Collections Framework, Java 8 Features, Lambda Functions, Streams.
Last updated 1 week ago
Recommended books for interview preparation:
Similar Posts
 Secure OTP generation in Java
 HmacSHA256 Signature in Java
 Submit Form with Java 11 HttpClient  Kotlin
 Java Exception Class Hierarchy
 Http download using Java NIO FileChannel
 CRC32 checksum calculation Java NIO
 Precision and scale for a Double in java
 Difference between HashMap, LinkedHashMap and TreeMap
 What is difference between ExecutorService submit and execute method
 What is left shift right shift and unsigned rght shift operator in Java