I'm having slight difficulty in performing a calculation in Java. Here is what I'm trying to do -
((0.053800 * (500000/1000)) + 4) * 0.85
In my java application, it returns 26.264999999999997, which if you round up to 2 decimal places, becomes 26.26.
But in MS Excel, the same formula returns 26.265000.. and therefore the rounded result is 26.27.
If my Java application is returning incorrect value, what can I do to correct it?
The following is a much better approximation, which results in the same value in this case:
import java.math.BigDecimal;
import java.math.MathContext;
public class Test {
public static void main(String[] args) {
//double d = ((0.053800 * (500000/1000)) + 4) * 0.85;
BigDecimal d = ((new BigDecimal(0.053800).multiply(new BigDecimal(500000).divide(new BigDecimal(1000)))).add(new BigDecimal(4))).multiply(new BigDecimal(0.85));
System.out.println(d.round(MathContext.DECIMAL32));
}
}
See my answer here for an explanation of what's going on.