Changing the weird float and bigdecimal rounding to accurate custom method