change calculation to big decimal