BigDecimal用法

目录:
一、基本用法(加减乘除)
二、转换
三、比较
四、取整模式

一、基本用法

1、加

double d = 10.01;
// 这么转换有精度损益,建议用String。我们如果需要精确计算,非要用String来够造BigDecimal不可!
System.out.println(new BigDecimal(d));
System.out.println(BigDecimal.valueOf(d));

BigDecimal d2BigDecimal = BigDecimal.valueOf(d);
BigDecimal b1 = new BigDecimal("0.03");
// 加:add
BigDecimal result1 = d2BigDecimal.add(b1);
System.out.println(result1);

console

10.0099999999999997868371792719699442386627197265625
10.01
加法:10.04

2、减

// 减:subtract
BigDecimal result2 = d2BigDecimal.subtract(b1);
System.out.println("减法:" + result2);

console

减法:9.98

3、乘

// 乘:multiply
BigDecimal result3 = d2BigDecimal.multiply(b1);
System.out.println("乘法:" + result3);

console

乘法:0.3003
3.1、乘法精度值
// 保留两位,四舍五入。scale指的是你小数点后的位数,默认四舍五入。
BigDecimal result3_ = d2BigDecimal.multiply(b1).setScale(2, RoundingMode.HALF_UP);
System.out.println("乘法(保留两位,四舍五入):" + result3_);

console

乘法(保留两位,四舍五入):0.30

4、除

// 除:divide。保留两位,四舍五入
BigDecimal result4 = d2BigDecimal.divide(b1, 2, RoundingMode.HALF_UP);
System.out.println("除法(保留两位,四舍五入):" + result4);

console

除法(保留两位,四舍五入):333.67

二、转换

// 转double
System.out.println("转double:" + d2BigDecimal.doubleValue());
// 转int
System.out.println("转int:" + d2BigDecimal.intValue());
// 转float
System.out.println("转float:" + d2BigDecimal.floatValue());
// 转Long
System.out.println("转Long:" + d2BigDecimal.longValue());
// 转String
System.out.println("转String:" + d2BigDecimal.toString());

console

double10.01int10float10.01
转Long:10
转String:10.01

三、比较

// 比较:compareTo
int compare = d2BigDecimal.compareTo(b1);
// 大于为1,等于为0,小于为-1
System.out.println(compare);
BigDecimal d2BigDecimal2 = new BigDecimal("10.01");
int compare2 = d2BigDecimal.compareTo(d2BigDecimal2);
System.out.println(compare2);

console

1
0

四、取整模式

RoundingMode枚举
为了能更好理解,我们可以画一个XY轴:

RoundingMode.CEILING:取右边最近的整数

RoundingMode.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整

RoundingMode.FLOOR:取左边最近的正数

RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数

RoundingMode.HALF_UP:四舍五入,负数原理同上

RoundingMode.HALF_EVEN:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入
BigDecimal常量
BigDecimal枚举常量用法摘要  :

CEILING
              向正无限大方向舍入的舍入模式。
DOWN
              向零方向舍入的舍入模式。
FLOOR
              向负无限大方向舍入的舍入模式。
HALF_DOWN
              向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN
              向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP
              向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
UNNECESSARY
              用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP
              远离零方向舍入的舍入模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值