fork(3) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main(String[] args)
  11. {
  12. int bdErrors = 0, doubleErrors = 0;
  13. for(BigDecimal bd = BigDecimal.ZERO; bd.compareTo(BigDecimal.ONE) <=0 ; bd = bd.add(new BigDecimal("0.0001"))) {
  14. // test BigDecimal rounds as expected.
  15. BigDecimal bd2 = bd.setScale(2, RoundingMode.HALF_UP);
  16. BigDecimal error = bd2.remainder(new BigDecimal("0.01"));
  17. if (error.compareTo(BigDecimal.ZERO) != 0)
  18. bdErrors++;
  19. // now try this with double.
  20. double d = bd.doubleValue();
  21. double d2 = Math.round(d * 100) / 100.0;
  22.  
  23. // has any information been lots, use BigDecimal to do calculations to be sure of no accidental errors.
  24. BigDecimal bd3 = BigDecimal.valueOf(d2);
  25. BigDecimal error3 = bd3.remainder(new BigDecimal("0.01"));
  26. if (error3.compareTo(BigDecimal.ZERO) != 0)
  27. doubleErrors++;
  28.  
  29. }
  30. System.out.printf("BigDecimal errors %,d & double errors %,d%n", bdErrors, doubleErrors);
  31. }
  32. }
Compilation error #stdin compilation error #stdout 0.1s 380736KB
stdin
Standard input is empty
compilation info
Main.java:13: error: cannot find symbol
        for(BigDecimal bd = BigDecimal.ZERO; bd.compareTo(BigDecimal.ONE) <=0 ; bd = bd.add(new BigDecimal("0.0001"))) {
            ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:13: error: cannot find symbol
        for(BigDecimal bd = BigDecimal.ZERO; bd.compareTo(BigDecimal.ONE) <=0 ; bd = bd.add(new BigDecimal("0.0001"))) {
                            ^
  symbol:   variable BigDecimal
  location: class Ideone
Main.java:13: error: cannot find symbol
        for(BigDecimal bd = BigDecimal.ZERO; bd.compareTo(BigDecimal.ONE) <=0 ; bd = bd.add(new BigDecimal("0.0001"))) {
                                                          ^
  symbol:   variable BigDecimal
  location: class Ideone
Main.java:13: error: cannot find symbol
        for(BigDecimal bd = BigDecimal.ZERO; bd.compareTo(BigDecimal.ONE) <=0 ; bd = bd.add(new BigDecimal("0.0001"))) {
                                                                                                ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:15: error: cannot find symbol
            BigDecimal bd2 = bd.setScale(2, RoundingMode.HALF_UP);
            ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:15: error: cannot find symbol
            BigDecimal bd2 = bd.setScale(2, RoundingMode.HALF_UP);
                                            ^
  symbol:   variable RoundingMode
  location: class Ideone
Main.java:16: error: cannot find symbol
            BigDecimal error = bd2.remainder(new BigDecimal("0.01"));
            ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:16: error: cannot find symbol
            BigDecimal error = bd2.remainder(new BigDecimal("0.01"));
                                                 ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:17: error: cannot find symbol
            if (error.compareTo(BigDecimal.ZERO) != 0)
                                ^
  symbol:   variable BigDecimal
  location: class Ideone
Main.java:24: error: cannot find symbol
            BigDecimal bd3 = BigDecimal.valueOf(d2);
            ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:24: error: cannot find symbol
            BigDecimal bd3 = BigDecimal.valueOf(d2);
                             ^
  symbol:   variable BigDecimal
  location: class Ideone
Main.java:25: error: cannot find symbol
            BigDecimal error3 = bd3.remainder(new BigDecimal("0.01"));
            ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:25: error: cannot find symbol
            BigDecimal error3 = bd3.remainder(new BigDecimal("0.01"));
                                                  ^
  symbol:   class BigDecimal
  location: class Ideone
Main.java:26: error: cannot find symbol
            if (error3.compareTo(BigDecimal.ZERO) != 0)
                                 ^
  symbol:   variable BigDecimal
  location: class Ideone
14 errors
stdout
Standard output is empty