价格BigDecimal的加减乘除、小数四舍五入、比较

 

num2必须改用传入String类型

 

复制代码
    //加法
        BigDecimal result1 = num1.add(num2);

 
        //减法
        BigDecimal result2 = num1.subtract(num2);

 
        //乘法
        BigDecimal result3 = num1.multiply(num2);

     //除法
        BigDecimal result5 = num2.divide(num1,20,BigDecimal.ROUND_HALF_UP);
 
        //绝对值
        BigDecimal result4 = num3.abs();

 
       
复制代码

 

 

小数部分操作

 

1. ROUND_DOWN

 

BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(b);//2.22 直接去掉多余的位数

 

 

 

 

2. ROUND_UP

 

BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);
System.out.println(c);//2.23 跟上面相反,进位处理
 

 

 

 

3. ROUND_CEILING

 

天花板(向上),正数进位向上,负数舍位向上

 

BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(f);//2.23 如果是正数,相当于BigDecimal.ROUND_UP
 
BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(g);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN

 

 

 

 

4. ROUND_FLOOR

 

地板(向下),正数舍位向下,负数进位向下

 

BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(h);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN
 
BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(i);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP

 

 

 

 

5. ROUND_HALF_UP

 

BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍弃部分>=.5,就进位)

 

 

 

 

6. ROUND_HALF_DOWN

 

BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍弃部分>.5,就进位)

 

pow() 立方计算  

BigDecimal bigDecimal=BigDecimal.TEN;
System.out.println(bigDecimal.pow(3));  //1000

 

 

数值比较

复制代码
BigDecimal a = new BigDecimal ("1");
BigDecimal b = new BigDecimal ("2");
 
//使用compareTo方法比较 a、b不能为null
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}
复制代码

 

posted @   yvioo  阅读(211)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示