import java.math.BigDecimal; public class Test { public static void main(String[] args) { double oldBalance = 1873.12; BigDecimal ob = new BigDecimal(oldBalance); System.out.println("Old bal " + ob); double reduction = 19.99; BigDecimal r = new BigDecimal(reduction); System.out.println("Expense " + r); BigDecimal exactDiff = ob.subtract(r); System.out.println("exact " + exactDiff); System.out.println("calculated " + new BigDecimal(oldBalance-reduction)); double expected = 1853.13; BigDecimal e = new BigDecimal(expected); System.out.println("expected " + e); System.out.println("reported " + "1853.13000000000000000000"); System.out.println("nextUp " + new BigDecimal(Math.nextUp(expected))); System.out.println("nextDown " + new BigDecimal(Math.nextDown(expected))); } }