Cả BigInteger và BigDecimal đều mở rộng java.lang.Number, tuy nhiên điều này không có nghĩa là bạn có thể truyền từ BigInteger lên đến Number rồi xuống BigDecimal.
Có một hàm tạo trong BigDecimal nhận BigInteger, vì vậy hãy thử:
BigDecimal d = new BigDecimal(b);