BigDecimal的常用方法大全

目录

一、数据初始化

二、数据类型转换

三、进行基本运算

四、设置数值的精度

1.通过除法设置

2.通过乘法设置

五、比较数值大小

六、其他常用方法

1.取绝对值

2.取相反数

3.比较取最大值

4.比较取最小值

5.查精度


一、数据初始化

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 初始化
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        //使用构造函数,参数是整型
        BigDecimal num = new BigDecimal(10);
        //使用构造函数,参数是字符串
        BigDecimal num1 = new BigDecimal("10");
        //使用构造函数,参数是双精度浮点型(不推荐使用,精度丢失)
        BigDecimal num2 = new BigDecimal(10.01);
        //使用构造函数,参数是长整型
        BigDecimal num3 = new BigDecimal(10L);
        //使用静态常量,有BigDecimal.ZERO、BigDecimal.ONE和BigDecimal.TEN
        BigDecimal num4 = BigDecimal.TEN;
        //使用静态方法,支持整型和双精度浮点型(推荐使用,参数是双精度浮点型时,内部会优先转换成字符串)
        BigDecimal num5 = BigDecimal.valueOf(10.01);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        System.out.println("num3:"+num3);
        System.out.println("num4:"+num4);
        System.out.println("num5:"+num5);
    }
}

二、数据类型转换

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 类型转换
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("10.91");
        //转成整型
        int num1 = num.intValue();
        //转成长整型
        long num2 = num.longValue();
        //转成浮点型
        float num3 = num.floatValue();
        //转成双精度浮点型
        double num4 = num.doubleValue();
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        System.out.println("num3:"+num3);
        System.out.println("num4:"+num4);
    }
}

三、进行基本运算

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 基本运算
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3");
        BigDecimal num1 = new BigDecimal("4");
        //加法运算
        BigDecimal num2 = num.add(num1);
        //减法运算
        BigDecimal num3 = num.subtract(num1);
        //乘法运算
        BigDecimal num4 = num.multiply(num1);
        //除法运算
        BigDecimal num5 = num.divide(num1);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        System.out.println("num3:"+num3);
        System.out.println("num4:"+num4);
        System.out.println("num5:"+num5);
    }
}

四、设置数值的精度

ROUND_UP: 保留设置的小数,剩余小数位数大于零则进一位
ROUND_DOWN:保留设置的小数,剩余小数后面都直接舍弃
ROUND_HALF_UP:保留设置的小数,剩余小数后一位进行四舍五入
ROUND_HALF_DOWN:保留设置的小数,剩余小数后一位进行五舍六入
ROUND_CEILING:保留设置的小数,如果值是正数则按ROUND_UP变化,值是负数则按ROUND_DOWN变化
ROUND_FLOOR:保留设置的小数,如果值是正数则按ROUND_DOWN变化,值是负数则按ROUND_UP变化
ROUND_HALF_EVEN:保留设置的小数,进行四舍六入,如果刚好是五,则看前一位是偶数就舍弃,奇数就则进一位
ROUND_UNNECESSARY:保留设置的小数,如果存在剩余小数位且不为0会报错:java.lang.ArithmeticException

1.通过除法设置

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 设置精度
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("20");
        BigDecimal num1 = new BigDecimal("3");
        //保留两位小数,剩余小数位数大于零则进一位
        BigDecimal num2 = num.divide(num1,2,BigDecimal.ROUND_UP);
        //保留两位小数,剩余小数后面都直接舍弃
        BigDecimal num3 = num.divide(num1,2,BigDecimal.ROUND_DOWN);
        //保留两位小数,剩余小数后一位进行四舍五入
        BigDecimal num4 = num.divide(num1,2,BigDecimal.ROUND_HALF_UP);
        //保留两位小数,剩余小数后一位进行五舍六入
        BigDecimal num5 = num.divide(num1,2,BigDecimal.ROUND_HALF_DOWN);
        //保留两位小数,如果值是正数则按ROUND_UP变化,值是负数则按ROUND_DOWN变化
        BigDecimal num6 = num.divide(num1,2,BigDecimal.ROUND_CEILING);
        //保留两位小数,如果值是正数则按ROUND_DOWN变化,值是负数则按ROUND_UP变化
        BigDecimal num7= num.divide(num1,2,BigDecimal.ROUND_FLOOR);
        //保留两位小数,进行四舍六入,如果刚好是五,则看前一位是偶数就舍弃,奇数就则进一位
        BigDecimal num8= num.divide(num1,2,BigDecimal.ROUND_HALF_EVEN);
        //保留两位小数,如果存在剩余小数位且不为0会报错:java.lang.ArithmeticException
        //BigDecimal num9= num.divide(num1,2,BigDecimal.ROUND_UNNECESSARY);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        System.out.println("num3:"+num3);
        System.out.println("num4:"+num4);
        System.out.println("num5:"+num5);
        System.out.println("num6:"+num6);
        System.out.println("num7:"+num7);
        System.out.println("num8:"+num8);
        //System.out.println("num9:"+num9);

    }
}

2.通过乘法设置

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 设置精度
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("12.341");
        BigDecimal num1 = new BigDecimal("2");
        //保留两位小数,剩余小数位数大于零则进一位
        BigDecimal num2 = num.multiply(num1).setScale(2,BigDecimal.ROUND_UP);
        //保留两位小数,剩余小数后面都直接舍弃
        BigDecimal num3 = num.multiply(num1).setScale(2,BigDecimal.ROUND_DOWN);
        //保留两位小数,剩余小数后一位进行四舍五入
        BigDecimal num4 = num.multiply(num1).setScale(2,BigDecimal.ROUND_HALF_UP);
        //保留两位小数,剩余小数后一位进行五舍六入
        BigDecimal num5 = num.multiply(num1).setScale(2,BigDecimal.ROUND_HALF_DOWN);
        //保留两位小数,如果值是正数则按ROUND_UP变化,值是负数则按ROUND_DOWN变化
        BigDecimal num6 = num.multiply(num1).setScale(2,BigDecimal.ROUND_CEILING);
        //保留两位小数,如果值是正数则按ROUND_DOWN变化,值是负数则按ROUND_UP变化
        BigDecimal num7= num.multiply(num1).setScale(2,BigDecimal.ROUND_FLOOR);
        //保留两位小数,进行四舍六入,如果刚好是五,则看前一位是偶数就舍弃,奇数就则进一位
        BigDecimal num8= num.multiply(num1).setScale(2,BigDecimal.ROUND_HALF_EVEN);
        //保留两位小数,如果存在剩余小数位且不为0会报错:java.lang.ArithmeticException
        BigDecimal num9= num.multiply(num1).setScale(3,BigDecimal.ROUND_UNNECESSARY);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        System.out.println("num3:"+num3);
        System.out.println("num4:"+num4);
        System.out.println("num5:"+num5);
        System.out.println("num6:"+num6);
        System.out.println("num7:"+num7);
        System.out.println("num8:"+num8);
        System.out.println("num9:"+num9);

    }
}

五、比较数值大小

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 比较大小
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3");
        BigDecimal num1 = new BigDecimal("4");
        int flag  = num.compareTo(num1);
        //flag大于0,表示前者比较大;flag小于0,表示后者比较大;flag等于0,表示两个一样大;
        if(flag >0){
            System.out.println(num+"大于"+num1);
        }else if(flag < 0){
            System.out.println(num+"小于"+num1);
        }else {
            System.out.println(num+"等于"+num1);
        }

    }
}

六、其他常用方法

1.取绝对值

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 取绝对值
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("-3");
        //获取绝对值
        BigDecimal num1 = num.abs();
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
    }
}

2.取相反数

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 取相反数
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3");
        //获取相反数
        BigDecimal num1 = num.negate();
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
    }
}

3.比较取最大值

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 比较取最大值
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3");
        BigDecimal num1 = new BigDecimal("4");
        //比较两个数,取最大值
        BigDecimal num2 = num.max(num1);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
    }
}

4.比较取最小值

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 比较取最小值
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3");
        BigDecimal num1 = new BigDecimal("4");
        //比较两个数,取最小值
        BigDecimal num2 = num.min(num1);
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
    }
}

5.查精度

package com.saas.demo;

import java.math.BigDecimal;

/**
 * 查精度
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("3.45");
        //获取精度
        int num1 = num.scale();
        System.out.println("num:"+num);
        System.out.println("num1:"+num1);
    }
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值