今天 get到了一个新知识,也就是 BigDecimal,顺便也mark一下

对于一些小数的计算用BigDecimal就比较方便

public static void main(String[] args){
        double a = 1.33;
        float b = 3.2f;
        BigDecimal num1 = new BigDecimal(Double.toString(a));
        BigDecimal num2 = new BigDecimal(Float.toString(b));

        System.out.println("+ = "+num1.add(num2));
        System.out.println("- = "+num1.subtract(num2));
        System.out.println("x = "+num1.multiply(num2));
        System.out.println("/ = "+num1.divide(num2));
        // 保留两位小数且四舍五入
        System.out.println("/ = "+num1.divide(num2,2,BigDecimal.ROUND_HALF_UP));
    }

运行结果

以及除法的舍入模式

ROUND_CEILING    //向正无穷方向舍入
ROUND_DOWN    //向零方向舍入
ROUND_FLOOR    //向负无穷方向舍入
ROUND_HALF_DOWN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
ROUND_HALF_EVEN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
ROUND_HALF_UP    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入”
ROUND_UNNECESSARY    //计算结果是精确的,不需要舍入模式
ROUND_UP    //向远离0的方向舍入

Ex - ploooosion!