Use BigDecimalinstead.
In fact, you really don't want to use binary floating point for monetary values.
EDIT: round() , . , ( , , ):
import java.math.*;
public class Test
{
public static void main(String[] args)
{
BigDecimal bd = new BigDecimal("20.44");
bd = bd.movePointRight(1);
BigInteger floor = bd.toBigInteger();
bd = new BigDecimal(floor).movePointLeft(1);
System.out.println(bd);
}
}
, ...