没有合适的资源?快使用搜索试试~ 我知道了~
首页Java BigDecimal使用及基本运算(推荐)
Java BigDecimal使用及基本运算(推荐)
3 下载量 141 浏览量
更新于2023-03-03
评论 1
收藏 180KB PDF 举报
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。这篇文章主要介绍了Java BigDecimal使用指南针(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
资源详情
资源评论
资源推荐
Java BigDecimal使用及基本运算使用及基本运算(推荐推荐)
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。这篇文章主要介绍了Java BigDecimal使用指南针(推荐),本文给大家介绍的
非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
BigDecimal简介简介
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运
算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其
对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
提起BigDecimal,相信大家都使用过,之所以总结这篇呢,是因为最近发现项目中使用的不是太规范,在某些场景下甚至出现代码抛出异常的情况,
所以就总结了这篇,希望大家在使用时,可以少踩一些坑。
1. 基本运算基本运算
1.1 加法
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.12");
BigDecimal number3 = number1.add(number2);
System.out.println("number1 add number2 = " + number3);
输出结果:
number1 add number2 = 100.00
1.2 减法
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.12");
BigDecimal number3 = number1.subtract(number2);
System.out.println("number1 subtract number2 = " + number3);
输出结果:
number1 subtract number2 = 77.76
1.3 乘法
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.12");
BigDecimal number3 = number1.multiply(number2);
System.out.println("number1 multiply number2 = " + number3);
输出结果:
number1 multiply number2 = 988.3456
1.4 除法
BigDecimal number1 = new BigDecimal("88");
BigDecimal number2 = new BigDecimal("11");
BigDecimal number3 = number1.divide(number2);
System.out.println("number1 divide number2 = " + number3);
输出结果:
number1 divide number2 = 8
因为上面2个数可以整除,所以这么用没有问题,不过一但不能被整除,这么用就会有潜在的风险,会抛出java.lang.ArithmeticException异常,所以强烈建议像下面这样使用强烈建议像下面这样使用:
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.12");
BigDecimal number3 = number1.divide(number2, 2, RoundingMode.HALF_UP);
System.out.println("number1 divide number2 = " + number3);
输出结果:
number1 divide number2 = 7.99
此时使用的divide()方法源码如下所示:
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) {
return divide(divisor, scale, roundingMode.oldMode);
}
这里的scale指的是要保留的小数位数,我们传的是2,即保留2位小数。
这里的roundingMode指的是舍入模式,我们这里传的是RoundingMode.HALF_UP,即经常使用的四舍五入模式。
1.5 保留小数位数
如果我们想对BigDecimal类型保留小数位数,可以使用setScale()方法,使用方法如下所示:
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.12");
BigDecimal number3 = number1.multiply(number2);
System.out.println("number1 multiply number2 = " + number3);
// 保留3位小数,四舍五入
BigDecimal number4 = number3.setScale(3, RoundingMode.HALF_UP);
System.out.println("number3 setScale = " + number4);
输出结果:
number1 multiply number2 = 988.3456
number3 setScale = 988.346
1.6 比较大小
BigDecimal比较大小,可以使用compareTo()方法,使用方法如下所示:
BigDecimal number1 = new BigDecimal("88.88");
BigDecimal number2 = new BigDecimal("11.11");
BigDecimal number3 = new BigDecimal("99.99");
BigDecimal number4 = new BigDecimal("88.88");
weixin_38727062
- 粉丝: 4
- 资源: 978
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0