java-BigDecimal用法注意事项-创新互联

由于浮点数据类型float,double在计算中的不确定性,在需要精确计算的时候,java提供一个BigDecimal,使用 BigDecimal 来定义浮点数的值,再进行浮点数的运算操作。

创新互联长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为海淀企业提供专业的成都网站制作、做网站,海淀网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。BigDecimal 的大小比较:
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
System.out.println(a.compareTo(b));// 1
BigDecimal 保留几位小数
BigDecimal m = new BigDecimal("1.255433");
BigDecimal n = m.setScale(3,BigDecimal.ROUND_HALF_DOWN);

注意点:

1、使用string传参构造bigDecimal数据,使用浮点数double会有丢失精度的风险

2、执行计算过程中必须考虑string为空,null的情况,

3、执行计算过程中一旦出现divide除法操作,还必须判断:

除数不为零(会报错除数不能为0)

是否除尽(不指定,会报错Non-terminating decimal expansion)

保留小数位数长度(可能超出数据存储范围导致报错)

gasConsumeIndex.setQoq((new BigDecimal(gasConsumeIndex.getIndexOfValue())
						.subtract(new BigDecimal(gasConsumeIndex.getLastMonthValue()))
						.divide(new BigDecimal(gasConsumeIndex.getLastMonthValue()),BigDecimal.ROUND_CEILING))
						.multiply(new BigDecimal(100))
						.setScale(2,BigDecimal.ROUND_HALF_UP)
						.toString()+"%");

4、bigDecimail判断是否为0 务必使用,使用equale会因为精度比较失败

compareTo(BigDecimal.ZERO)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:java-BigDecimal用法注意事项-创新互联
文章地址:http://hxwzsj.com/article/dcsoop.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 成都网站建设 成都网站制作 成都商城网站制作 营销型网站建设 成都营销网站制作 公司网站建设 成都商城网站建设 成都网站设计 成都做网站建设公司 成都定制网站建设 app网站建设 成都网站制作 成都网站建设 高端网站建设 重庆电商网站建设 外贸网站设计方案 成都响应式网站建设 攀枝花网站设计 成都品牌网站设计 网站制作公司 成都网站设计 重庆手机网站建设