前言:
小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。
今天是第五个 java.lang.Math 包中的 BigDecimal 类
我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,
把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,
为什么用这串代码关键字,对比同类型的代码,
让大家真正看完以后融会贯通,举一反三,实践应用!!!!
①官方定义 和 大白话拆解对比
②举生活中常见贴合例子、图解辅助理解的形式
③对代码实例中关键部分进行详细拆解、总结
给小编一个赞或者关注吧,我们一起进步!!
官方语言:
- BigDecimal 类是 Java 中用于处理高精度数值计算的类。它支持不可变的、任意精度的有符号十进制定点数。在商业计算中,由于对数字精度要求较高,通常使用 BigDecimal 类来代替 Float 和 Double 类。
构造器
- public BigDecimal(double val):通过一个 double 类型的值创建 BigDecimal 对象。
- public BigDecimal(String val):通过一个字符串形式的数值创建 BigDecimal 对象,推荐使用这种方式以避免精度损失。
常用方法
- add(BigDecimal augend):将当前 BigDecimal 对象与另一个 BigDecimal 对象相加。
- subtract(BigDecimal subtrahend):从当前 BigDecimal 对象减去另一个 BigDecimal 对象。
- multiply(BigDecimal multiplicand):将当前 BigDecimal 对象与另一个 BigDecimal 对象相乘。
- divide(BigDecimal divisor, int scale, int roundingMode):将当前 BigDecimal 对象除以另一个 BigDecimal 对象,并指定保留的小数位数和舍入模式。
大白话拆解:
- BigDecimal 是 Java 中的一个类,专门用来处理那些需要非常高精度的数字计算。比如,在银行系统中处理金额时,我们不能允许有任何误差,这时就需要用到 BigDecimal。
构造器
- 你可以通过一个数字或者一个字符串来创建一个 BigDecimal 对象。如果你用字符串来创建,这样可以避免一些小数点后的误差问题。
常用方法
- add():把两个 BigDecimal 数字相加。
- subtract():从一个 BigDecimal 数字中减去另一个 BigDecimal 数字。
- multiply():把两个 BigDecimal 数字相乘。
- divide():把一个 BigDecimal 数字除以另一个 BigDecimal 数字,并且你可以指定保留几位小数以及如何处理多余的位数(比如四舍五入)。
举个栗子:
代码案例描述:
正在开发一个电商系统,需要计算某个商品的最终价格(包括税费)以及给定折扣后的实际支付金额。我们将通过以下步骤来完成:
- 定义商品的基础价格。
- 计算包含税费的商品总价。
- 应用折扣后计算实际支付金额。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class ECommerceExample {
public static void main(String[] args) {
// 商品基础价格为199.99元
BigDecimal basePrice = new BigDecimal("199.99");
// 税率为5%
BigDecimal taxRate = new BigDecimal("0.05");
// 折扣为10%
BigDecimal discountRate = new BigDecimal("0.10");
// 计算含税总价
BigDecimal totalWithTax = calculateTotalWithTax(basePrice, taxRate);
System.out.println("含税总价: " + totalWithTax);
// 应用折扣后的实际支付金额
BigDecimal finalPayment = applyDiscount(totalWithTax, discountRate);
System.out.println("应用折扣后的实际支付金额: " + finalPayment);
}
/**
* 计算含税总价
*/
private static BigDecimal calculateTotalWithTax(BigDecimal basePrice, BigDecimal taxRate) {
BigDecimal taxAmount = basePrice.multiply(taxRate).setScale(2, RoundingMode.HALF_UP);
return basePrice.add(taxAmount);
}
/**
* 应用折扣后的实际支付金额
*/
private static BigDecimal applyDiscount(BigDecimal totalWithTax, BigDecimal discountRate) {
BigDecimal discountAmount = totalWithTax.multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
return totalWithTax.subtract(discountAmount);
}
}
这个例子没什么难懂的地方,就不做解释了。
我们今天就到这里吧,下次再见!!!