BigDecimal基本方法的使用

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

1.首先是基本的+、 -、 *、 / 方法;对于基本的运算方法BigDecimal提供了对应的方法进行对应的运算。

   加法:public BigDecimal add(BigDecimal value)
   减法:public BigDecimal subtract(BigDecimal value)
   乘法:public BigDecimal multiply(BigDecimal value)
   除法:public BigDecimal divide(BigDecimal value)

下面可以对这些方法进行一些简单的使用

/**
  * 基本方法,+、-、*、/
  */
 BigDecimal num1 = new BigDecimal(10);
 BigDecimal num2 = new BigDecimal(5);
 System.out.println("num1 + num2 = "+num1.add(num2)); //两数相加 结果为15
 System.out.println("num1 - num2 = "+num1.subtract(num2)); //两数相减 结果为5
 System.out.println("num1 * num2 = "+num1.multiply(num2)); //两数相乘 结果为50
 System.out.println("num1 / num2 = "+num1.divide(num2)); //两数相除 结果为2

对应运行的结果如图:
在这里插入图片描述
2.看完了基本的方法后,BigDecimal还提供了精确度的方法(俗称舍入方法):就是给定一个BigDecimal类型的数,需要对其保留多少位小数时候进行运算的方法。方法有许多个,在这里只列举了常用的4个。

/**
 * 舍入方法
 */
BigDecimal num3 = new BigDecimal("2.225");
System.out.println(num3.setScale(2, RoundingMode.UP)); //只入不舍 结果为2.23
System.out.println(num3.setScale(2, RoundingMode.DOWN)); //只舍不入 结果为2.22
System.out.println(num3.setScale(2, RoundingMode.HALF_UP)); //四舍五入 >=0.5入 结果为2.23
System.out.println(num3.setScale(2, RoundingMode.HALF_DOWN)); //四舍五入 <=0.5舍 结果为2.22

对应的运行结果如图:
在这里插入图片描述
3.接下来便要说一下下一个基本的方法便是取绝对值得方法,有时候我们要获取绝对值并对其进行操作,BigDecimal为我们提供了一个方法获取其绝对值,方便我们使用。

/**
 * 取绝对值方法
 */
BigDecimal num4 = new BigDecimal("-2.225");
System.out.println(num4.abs()); //取其绝对值 结果为2.225

对应运行的结果如图:
在这里插入图片描述
4.最后一个便是BigDecimal中的比较问题,BigDecimal类中的数值比较不像一般的比较可以用>、<、=;但是BigDecimal类也为我们提供了对应的方法compareTo()来比较两个数值的大小,运算后返回的结果只有3个,两数相等返回0;数1>数2返回1;数1<数2返回-1。

/**
 * 比较方法
 */
BigDecimal num5 = new BigDecimal("6");
BigDecimal num6 = new BigDecimal("6");
BigDecimal num7 = new BigDecimal("7");

System.out.println(num5.compareTo(num6)); //相等结果为0
System.out.println(num5.compareTo(num7)); //num5<num7 结果为-1
System.out.println(num7.compareTo(num6)); //num7>num5 结果为1

对应运行的结果如图:
在这里插入图片描述
完整的测试代码如下:

package com.it.ds.Test;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test14 {
    public static void main(String[] args) {
        /**
         * 基本方法,+、-、*、/
         */
        BigDecimal num1 = new BigDecimal(10);
        BigDecimal num2 = new BigDecimal(5);
        System.out.println("num1 + num2 = "+num1.add(num2)); //两数相加 结果为15
        System.out.println("num1 - num2 = "+num1.subtract(num2)); //两数相减 结果为5
        System.out.println("num1 * num2 = "+num1.multiply(num2)); //两数相乘 结果为50
        System.out.println("num1 / num2 = "+num1.divide(num2)); //两数相除 结果为2

        System.out.println("-----------------------------------------");

        /**
         * 舍入方法
         */
        BigDecimal num3 = new BigDecimal("2.225");
        System.out.println(num3.setScale(2, RoundingMode.UP)); //只入不舍 结果为2.23
        System.out.println(num3.setScale(2, RoundingMode.DOWN)); //只舍不入 结果为2.22
        System.out.println(num3.setScale(2, RoundingMode.HALF_UP)); //四舍五入 >=0.5入 结果为2.23
        System.out.println(num3.setScale(2, RoundingMode.HALF_DOWN)); //四舍五入 <=0.5舍 结果为2.22
        System.out.println("-----------------------------------------");

        /**
         * 取绝对值方法
         */
        BigDecimal num4 = new BigDecimal("-2.225");
        System.out.println(num4.abs()); //取其绝对值 结果为2.225

        System.out.println("-----------------------------------------");

        /**
         * 比较方法
         */
        BigDecimal num5 = new BigDecimal("6");
        BigDecimal num6 = new BigDecimal("6");
        BigDecimal num7 = new BigDecimal("7");

        System.out.println(num5.compareTo(num6)); //相等结果为0
        System.out.println(num5.compareTo(num7)); //num5<num7 结果为-1
        System.out.println(num7.compareTo(num6)); //num7>num5 结果为1
    }
}

运行结果如下:
在这里插入图片描述

BigDecimal类的基本使用也就说到这里了,希望对大家有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值