Java 和 Oracle 中金额计算常用的方法和一些坑

目录

1. 基本的加减乘除

2. 除法除不尽可能报错

 3. 使用 ROUND_UP & ROUND_DOWN 小心有坑

4. 无条件进位的常用用法之 ROUND_CEILING

5. 无条件舍位的常用用法之 ROUND_FLOOR

6. 四舍五入之 ROUND_HALF_UP & ROUND_HALF_DOWN

7. 银行家算法

8. Oracle 中的常用函数


Java 中在处理金额相关的计算, 基本上都会使用 BigDecimal 类型。BigDecimal 解决了小数精度问题, 避免了浮点数运算产生的一些误差。 本文主要讲述 BigDecimal 一些常用的用法, 也增加了一些 Oracle 中对精度的处理, 供对比学习。

1. 基本的加减乘除


BigDecimal data1 = new BigDecimal("1");
BigDecimal data2 = new BigDecimal("2");
BigDecimal data3 = new BigDecimal("3");

System.out.println("1 + 2 = " + data1.add(data2));

System.out.println("1 - 2 =  " + data1.subtract(data2));

System.out.println("1 x 2 = " + data1.multiply(data2));

System.out.println("1 / 2 =  " + data1.divide(data2));

执行结果:

2. 除法除不尽可能报错


  • 解决方法: 养成做完运算指定保留小数位的好习惯;
// 避免除不尽, 需要指定保留小数位数
System.out.println("1 / 3 = " + data1.divide(data3, 6, BigDecimal.ROUND_CEILING) + " (无条件进位)");

System.out.println("1 / 3 = " + data1.divide(data3, 6, BigDecimal.ROUND_FLOOR) + " (无条件舍弃)");

执行结果

 3. 使用 ROUND_UP & ROUND_DOWN 小心有坑


  • ROUND_UP & RO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值