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
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