fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.math.*;
  7.  
  8. /* Name of the class has to be "Main" only if the class is public. */
  9. class Ideone
  10. {
  11. public static void main (String[] args) throws java.lang.Exception
  12. {
  13. System.out.println("Rounded: " + round(2.655d,2)); // -> 2.65
  14. System.out.println("Rounded: " + round(1.655d,2)); // -> 1.66
  15. }
  16.  
  17. static Double round(Double d, int precise)
  18. {
  19.  
  20. BigDecimal bigDecimal = new BigDecimal(d);
  21. System.out.println("Before round: " + bigDecimal.toPlainString());
  22. bigDecimal = bigDecimal.setScale(15, RoundingMode.HALF_UP);
  23. System.out.println("Hack round: " + bigDecimal.toPlainString());
  24. bigDecimal = bigDecimal.setScale(precise, RoundingMode.HALF_UP);
  25. System.out.println("After round: " + bigDecimal.toPlainString());
  26. return bigDecimal.doubleValue();
  27. }
  28.  
  29. }
Success #stdin #stdout 0.07s 380224KB
stdin
Standard input is empty
stdout
Before round: 2.654999999999999804600747665972448885440826416015625
Hack round: 2.655000000000000
After round: 2.66
Rounded: 2.66
Before round: 1.6550000000000000266453525910037569701671600341796875
Hack round: 1.655000000000000
After round: 1.66
Rounded: 1.66