java四舍五入

/**
 * 四舍五入的几种方式
 * 1.BigDecimal.ROUND_HALF_UP
 * 2.Math.round
 * 3.String.format
 */
//BigDecimal的四舍五入.1代表保留1位小数,2代表保留2位小数,等等
class BigDecimalTest{
    public static void main(String[] args) {

        ROUND_UP();//舍弃位非0即进位(负数按绝对值看)
        ROUND_DOWN();//所有的位都要舍弃,不存在进位情况(负数按绝对值看)
        ROUND_CEILING();//正数舍弃位非0即进位;负数所有的位都要舍弃,不存在进位情况
        ROUND_FLOOR();//正数所有的位都要舍弃,不存在进位情况;负数舍弃位非0即进位(按绝对值看)
        ROUND_HALF_UP();//舍弃位小于5,舍; 舍弃位大于5,进位后舍; 等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
        ROUND_HALF_DOWN();//舍弃位小于5,舍; 舍弃位大于5,进位后舍; 等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
        ROUND_HALF_EVEN();//舍弃位小于5,舍; 舍弃位大于5,进位后舍;等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
    }

    public static void ROUND_UP(){
        System.out.println("(ROUND_UP)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_UP));

        System.out.println("(ROUND_UP)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_UP));
        System.out.println("(ROUND_UP)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_UP));

//        (ROUND_UP)11.5450:11.55
//        (ROUND_UP)11.5351:11.54
//        (ROUND_UP)11.544:11.55
//        (ROUND_UP)11.546:11.55
//        (ROUND_UP)11.535:11.54
//        (ROUND_UP)-11.5450:-11.55
//        (ROUND_UP)-11.5351:-11.54
//        (ROUND_UP)-11.544:-11.55
//        (ROUND_UP)-11.546:-11.55
//        (ROUND_UP)-11.535:-11.54
    }
    public static void ROUND_DOWN(){
        System.out.println("(ROUND_DOWN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_DOWN));

        System.out.println("(ROUND_DOWN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_DOWN));
        System.out.println("(ROUND_DOWN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_DOWN));

//        (ROUND_DOWN)11.5450:11.54
//        (ROUND_DOWN)11.5351:11.53
//        (ROUND_DOWN)11.544:11.54
//        (ROUND_DOWN)11.546:11.54
//        (ROUND_DOWN)11.535:11.53
//        (ROUND_DOWN)-11.5450:-11.54
//        (ROUND_DOWN)-11.5351:-11.53
//        (ROUND_DOWN)-11.544:-11.54
//        (ROUND_DOWN)-11.546:-11.54
//        (ROUND_DOWN)-11.535:-11.53

    }
    public static void ROUND_CEILING(){
        System.out.println("(ROUND_CEILING)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_CEILING));

        System.out.println("(ROUND_CEILING)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_CEILING));
        System.out.println("(ROUND_CEILING)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_CEILING));

        //(ROUND_CEILING)11.5450:11.55
        //(ROUND_CEILING)11.5351:11.54
        //(ROUND_CEILING)11.544:11.55
        //(ROUND_CEILING)11.546:11.55
        //(ROUND_CEILING)11.535:11.54
        //(ROUND_CEILING)-11.5450:-11.54
        //(ROUND_CEILING)-11.5351:-11.53
        //(ROUND_CEILING)-11.544:-11.54
        //(ROUND_CEILING)-11.546:-11.54
        //(ROUND_CEILING)-11.535:-11.53
    }
    public static void ROUND_FLOOR(){
        System.out.println("(ROUND_FLOOR)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_FLOOR));

        System.out.println("(ROUND_FLOOR)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_FLOOR));
        System.out.println("(ROUND_FLOOR)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_FLOOR));

        //(ROUND_FLOOR)11.5450:11.54
        //(ROUND_FLOOR)11.5351:11.53
        //(ROUND_FLOOR)11.544:11.54
        //(ROUND_FLOOR)11.546:11.54
        //(ROUND_FLOOR)11.535:11.53
        //(ROUND_FLOOR)-11.5450:-11.55
        //(ROUND_FLOOR)-11.5351:-11.54
        //(ROUND_FLOOR)-11.544:-11.55
        //(ROUND_FLOOR)-11.546:-11.55
        //(ROUND_FLOOR)-11.535:-11.54
    }
    public static void ROUND_HALF_UP(){
        System.out.println("(ROUND_HALF_UP)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_UP));

        System.out.println("(ROUND_HALF_UP)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println("(ROUND_HALF_UP)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_UP));

        //(ROUND_HALF_UP)11.5450:11.54
        //(ROUND_HALF_UP)11.5351:11.54
        //(ROUND_HALF_UP)11.544:11.54
        //(ROUND_HALF_UP)11.546:11.55
        //(ROUND_HALF_UP)11.535:11.54
        //(ROUND_HALF_UP)-11.5450:-11.54
        //(ROUND_HALF_UP)-11.5351:-11.54
        //(ROUND_HALF_UP)-11.544:-11.54
        //(ROUND_HALF_UP)-11.546:-11.55
        //(ROUND_HALF_UP)-11.535:-11.54
    }
    public static void ROUND_HALF_DOWN(){
        System.out.println("(ROUND_HALF_DOWN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.5451:"+new BigDecimal(11.5451).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)11.536:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));

        System.out.println("(ROUND_HALF_DOWN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.5451:"+new BigDecimal(-11.5451).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println("(ROUND_HALF_DOWN)-11.536:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));

        //(ROUND_HALF_DOWN)11.5450:11.54
        //(ROUND_HALF_DOWN)11.5451:11.55
        //(ROUND_HALF_DOWN)11.5351:11.54
        //(ROUND_HALF_DOWN)11.544:11.54
        //(ROUND_HALF_DOWN)11.546:11.55
        //(ROUND_HALF_DOWN)11.535:11.54
        //(ROUND_HALF_DOWN)11.536:11.54
        //(ROUND_HALF_DOWN)-11.5450:-11.54
        //(ROUND_HALF_DOWN)-11.5451:-11.55
        //(ROUND_HALF_DOWN)-11.5351:-11.54
        //(ROUND_HALF_DOWN)-11.544:-11.54
        //(ROUND_HALF_DOWN)-11.546:-11.55
        //(ROUND_HALF_DOWN)-11.535:-11.54
        //(ROUND_HALF_DOWN)-11.536:-11.54
    }
    public static void ROUND_HALF_EVEN(){
        System.out.println("(ROUND_HALF_EVEN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)11.5451:"+new BigDecimal(11.5451).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_EVEN));

        System.out.println("(ROUND_HALF_EVEN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)-11.5451:"+new BigDecimal(-11.5451).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_EVEN));
        System.out.println("(ROUND_HALF_EVEN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_EVEN));

        //(ROUND_HALF_EVEN)11.5450:11.54
        //(ROUND_HALF_EVEN)11.5451:11.55
        //(ROUND_HALF_EVEN)11.5351:11.54
        //(ROUND_HALF_EVEN)11.544:11.54
        //(ROUND_HALF_EVEN)11.546:11.55
        //(ROUND_HALF_EVEN)11.535:11.54
        //(ROUND_HALF_EVEN)-11.5450:-11.54
        //(ROUND_HALF_EVEN)-11.5451:-11.55
        //(ROUND_HALF_EVEN)-11.5351:-11.54
        //(ROUND_HALF_EVEN)-11.544:-11.54
        //(ROUND_HALF_EVEN)-11.546:-11.55
        //(ROUND_HALF_EVEN)-11.535:-11.54
    }
}
//Math.round的四舍五入为取整,
// 正数为正常的四舍五入,
// 负数为取绝对值后进行五舍六入(如果记不住,则可以将负数加一个数字变为正数,然后进行四舍五入后再减去那个数字)
//举例:-1.5,取一个数字2相加之后等于0.5,四舍五入后等于1,再减去2,结果等于-1
class MathRound{
    public static void main(String[] args) {
        System.out.println("Math.round(1.5):"+Math.round(1.5));
        System.out.println("Math.round(1.4):"+Math.round(1.4));
        System.out.println("Math.round(-1.5):"+Math.round(-1.5));
        System.out.println("Math.round(-1.6):"+Math.round(-1.6));
        System.out.println("Math.round(-1.4):"+Math.round(-1.4));
        System.out.println("Math.round(-1.45):"+Math.round(-1.45));
        System.out.println("Math.round(-1.46):"+Math.round(-1.46));
        System.out.println("Math.round(-0.9):"+Math.round(-0.9));

        //Math.round(1.5):2
        //Math.round(1.4):1
        //Math.round(-1.5):-1
        //Math.round(-1.6):-2
        //Math.round(-1.4):-1
        //Math.round(-1.45):-1
        //Math.round(-1.46):-1
        //Math.round(-0.9):-1

    }
}
String.format四舍五入,保留几位小数就填几,正数为正常的四舍五入,负数为取绝对值后进行四舍五入
class StringFormat{
    public static void main(String[] args) {
        System.out.println("11.545**:"+Double.parseDouble(String.format("%.2f", 11.545)));
        System.out.println("11.546**:"+Double.parseDouble(String.format("%.2f", 11.546)));
        System.out.println("11.535**:"+Double.parseDouble(String.format("%.2f", 11.535)));
        System.out.println("11.536**:"+Double.parseDouble(String.format("%.2f", 11.536)));
        System.out.println("11.5451**:"+Double.parseDouble(String.format("%.2f", 11.5451)));
        System.out.println("11.5351**:"+Double.parseDouble(String.format("%.2f", 11.5351)));
        System.out.println("11.534**:"+Double.parseDouble(String.format("%.2f", 11.534)));

        System.out.println("-11.545**:"+Double.parseDouble(String.format("%.2f", -11.545)));
        System.out.println("-11.546**:"+Double.parseDouble(String.format("%.2f", -11.546)));
        System.out.println("-11.535**:"+Double.parseDouble(String.format("%.2f", -11.535)));
        System.out.println("-11.536**:"+Double.parseDouble(String.format("%.2f", -11.536)));
        System.out.println("-11.5451**:"+Double.parseDouble(String.format("%.2f", -11.5451)));
        System.out.println("-11.5351**:"+Double.parseDouble(String.format("%.2f", -11.5351)));
        System.out.println("-11.534**:"+Double.parseDouble(String.format("%.2f", -11.534)));

        //11.545**:11.55
        //11.546**:11.55
        //11.535**:11.54
        //11.536**:11.54
        //11.5451**:11.55
        //11.5351**:11.54
        //11.534**:11.53
        //-11.545**:-11.55
        //-11.546**:-11.55
        //-11.535**:-11.54
        //-11.536**:-11.54
        //-11.5451**:-11.55
        //-11.5351**:-11.54
        //-11.534**:-11.53
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值