Это решение неэффективно, но оно выполняет свою работу.
Исходный код
import java.math.BigDecimal;
public class BigDecimalRound {
public static void main(String[] args) {
BigDecimal bd;
float f;
bd = new BigDecimal(11.4443999999999999062083588796667754650115966796875);
f = roundBigDecimal(bd, 2);
System.out.println("bd: " + bd + ", f: " + f);
bd = new BigDecimal(35.9549999999999982946974341757595539093017578125);
f = roundBigDecimal(bd, 2);
System.out.println("bd: " + bd + ", f: " + f);
}
public static float roundBigDecimal(BigDecimal bd, int precision) {
int i = (int) Math.pow(10, precision);
return (float) Math.round(bd.floatValue() * i) / i;
}
}
выход
bd: 11.4443999999999999062083588796667754650115966796875, f: 11.44
bd: 35.9549999999999982946974341757595539093017578125, f: 35.96