java.math 包 中的 BigDecimal 类(详细案例拆解)

前言:

小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。

今天是第五个  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 数字,并且你可以指定保留几位小数以及如何处理多余的位数(比如四舍五入)。

举个栗子:

代码案例描述:

正在开发一个电商系统,需要计算某个商品的最终价格(包括税费)以及给定折扣后的实际支付金额。我们将通过以下步骤来完成:

  1. 定义商品的基础价格。
  2. 计算包含税费的商品总价。
  3. 应用折扣后计算实际支付金额。
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);
    }
}

这个例子没什么难懂的地方,就不做解释了。



我们今天就到这里吧,下次再见!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值