BigDecimal 加减乘除
- 一,为什么使用BigDecimal
- 二,简介
- 三,使用
- 四,取余(可选择保留几位余数)--做除法常用
- 五,BigDecimal 的类型转换
一,为什么使用BigDecimal
float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候就用到BigDecimal。
二,简介
BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。
三,使用
BigDecimal 的创建
复制代码
1
2
3
4
5
6
7// 创建对象方式 BigDecimal bigDecimal = new BigDecimal("1000"); // 内部方法获取 BigDecimal b2 = BigDecimal.valueOf(0.0);
BigDecimal 加法使用
复制代码
1
2
3
4
5BigDecimal big1 = new BigDecimal("444"); BigDecimal big2 = BigDecimal.valueOf(222); BigDecimal add = big1.add(big2); System.out.println(add); //666
BigDecimal 减法使用
复制代码
1
2
3
4
5BigDecimal big1 = new BigDecimal("444.2"); BigDecimal big2 = BigDecimal.valueOf(222.211); BigDecimal subtract = big1.subtract(big2); System.out.println(subtract); //221.989
BigDecimal 乘除法使用
复制代码
1
2
3
4
5
6
7
8
9BigDecimal big1 = new BigDecimal("12"); BigDecimal big2 = BigDecimal.valueOf(2); //乘法 BigDecimal multiply = big1.multiply(big2); System.out.println(multiply); //除法 BigDecimal divide = big1.divide(big2); //24 System.out.println(divide); //6
四,取余(可选择保留几位余数)–做除法常用
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15BigDecimal big1 = new BigDecimal("12.2552"); //直接删除多余小数 保留2位小数 BigDecimal bigDecimal = big1.setScale(2,BigDecimal.ROUND_DOWN); //进位处理 12.2222 --- 12.23 BigDecimal bigDecimal1 = big1.setScale(2, BigDecimal.ROUND_UP); //四舍五入 12.2252 -- 12.23 --如果是5向上取 BigDecimal bigDecimal2 = big1.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入 12.2252 ---12.22 ----如果是5向下取 BigDecimal bigDecimal3 = big1.setScale(2, BigDecimal.ROUND_FLOOR); // 也可以直接在运算中使用 BigDecimal big2 = new BigDecimal("10"); // big1 除big2 保留两位小数---两种方式都可以 BigDecimal divide = big1.divide(big2, 2, BigDecimal.ROUND_HALF_UP); BigDecimal divide2 = big1.divide(big2, 2, RoundingMode.HALF_UP);
五,BigDecimal 的类型转换
复制代码
1
2BigDecimal divide = big1.divide(big2, 2, BigDecimal.ROUND_HALF_UP);
当我们使用了BigDecimal做完计算结果也为返回我们一个BigDecimal类型 divide我们不能直接入库或者用于传递参数,这时候就需要转换成我们想要的数字类型
复制代码
1
2
3
4int i = divide.intValue(); long l = divide.longValue(); float v = divide.floatValue();
参考:点击链接去往
最后
以上就是欣喜小丸子最近收集整理的关于BigDecimal 加减乘除 及注意事项的全部内容,更多相关BigDecimal内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复