BigInteger et BigDecimal étendent tous deux java.lang.Number, mais cela ne signifie pas que vous pouvez effectuer un cast de BigInteger jusqu'à Number puis jusqu'à BigDecimal.
Il y a un constructeur dans BigDecimal qui prend un BigInteger, alors essayez :
BigDecimal d = new BigDecimal(b);