BigDecimal Test

    public void testBigDecimalRound() throws Exception {
        printBigDecimalRound("7.42",2);
        printBigDecimalRound("127.42",2);
        printBigDecimalRound("127",2);
        printBigDecimalRound("-127",2);
        printBigDecimalRound("-127.123",2);
    }

    private void printBigDecimalRound(String s, int p) {
        int prec=s.indexOf(".");
        prec=prec<0?s.length():prec;
        System.out.println("s>" + s );
        System.out.println("d>" + Double.parseDouble(s) );
        System.out.println("d>" + new BigDecimal(Double.parseDouble(s)) );
        System.out.println("r>"+ new BigDecimal(Double.parseDouble(s)).round(
                                   new MathContext(prec+p, RoundingMode.CEILING)) );
        System.out.println("x>" + new BigDecimal(s));
    }

results:
s>7.42
d>7.42
d>7.4199999999999999289457264239899814128875732421875
r>7.42
x>7.42
s>127.42
d>127.42
d>127.4200000000000017053025658242404460906982421875
r>127.43
x>127.42
s>127
d>127.0
d>127
r>127
x>127
s>-127
d>-127.0
d>-127
r>-127
x>-127
s>-127.123
d>-127.123
d>-127.1230000000000046611603465862572193145751953125
r>-127.123
x>-127.123
Posted by stekilove
,