fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.Math;
  5. import java.lang.*;
  6. import java.io.*;
  7. import java.math.*;
  8.  
  9. /* Name of the class has to be "Main" only if the class is public. */
  10. class Ideone
  11. {
  12. public static void main (String[] args) throws java.lang.Exception
  13. {
  14. MathContext deltaRoundContext = new MathContext(2);
  15. Scanner in = new Scanner(System.in);
  16. while(in.hasNextBigDecimal()) {
  17. BigDecimal x = in.nextBigDecimal();
  18. BigDecimal dx = in.nextBigDecimal().round(deltaRoundContext);
  19. int significatDigits = x.precision()-x.scale()+dx.scale();
  20. BigDecimal rounded = BigDecimal.ZERO;
  21. if (significatDigits>0) {
  22. MathContext roundContext = new MathContext(significatDigits);
  23. rounded = x.round(roundContext);
  24. }
  25. System.out.println("Original=" + x + " rounded=" + rounded + " ±" + dx);
  26. }
  27. }
  28. }
Success #stdin #stdout 0.11s 380736KB
stdin
100.7 10
100.7 1e1
100.7 11
100.7 1.1e1
100.7 9.9
1212.3 1
1212.3 2.3
12123.3231 0.03
0.0001 0.5
0.0005 0.0000032
stdout
Original=100.7  rounded=101  ±10
Original=100.7  rounded=1.0E+2  ±1E+1
Original=100.7  rounded=101  ±11
Original=100.7  rounded=101  ±11
Original=100.7  rounded=100.7  ±9.9
Original=1212.3  rounded=1212  ±1
Original=1212.3  rounded=1212.3  ±2.3
Original=12123.3231  rounded=12123.32  ±0.03
Original=0.0001  rounded=0  ±0.5
Original=0.0005  rounded=0.0005  ±0.0000032