天天看點

精度計算的銀行家算法

(BigDecimal.valueOf(1.23444000005).setScale(4,RoundingMode.HALF_EVEN));
    //舍去位的數組大于等于6,直接向前進一位,故1.23446000005結果為1.2345
    System.out.println(BigDecimal.valueOf(1.23446000005).setScale(4,RoundingMode.HALF_EVEN));
    //舍去位的數值等于5,5後有數,向前進一位,故1.23445000001結果為1.2345
    System.out.println(BigDecimal.valueOf(1.23445000001).setScale(4,RoundingMode.HALF_EVEN));
    //舍去位的數值等于5,5後全是0,5前位數值為奇數,則向前進一位,将前位湊成偶數,故1.23435000000結果為1.2344
    System.out.println(BigDecimal.valueOf(1.23435000000).setScale(4,RoundingMode.HALF_EVEN));
    //舍去位的數值等于5,5後全是0,5前位數值為偶數,則直接舍去該位,故1.23485000000結果為1.2348
    System.out.println(BigDecimal.valueOf(1.23485000000).setScale(4,RoundingMode.HALF_EVEN));