Seems to my this is a viabke solution to your use case.
The Irr function needs an array of double values that you create by looping through the list of Values.
The the retrun is a double value and with the bigdecimal valueof method you’re getting the correct bigdecimal value to be returned. You might want to do something with the precision, for example with the scale method like below:
BigDecimal.valueOf(d).setScale(2, RoundingMode.HALF_UP);
This makes sure that a value of 47.48111 is returned as 47.48, but that depends on what you want to do with the result of course.