我是靠谱客的博主 高兴招牌,最近开发中收集的这篇文章主要介绍BigDecimal的基本使用一.BigDecimal的创建二.BigDecimal的加减乘除三.两个BigDecimal值的比较总结:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.BigDecimal的创建

BigDecimal有两种创建方法,一种是通过构造方法,可以传入String类型,int类型,double类型,long类型或BigInteger类型的参数,

一种是通过BigDecimal的静态方法valueOf创建BigDecimal对象,只能传double类型或long类型的参数

package com.example2.demo;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTests {
    @Test
    public void testBigDecimal() {
        //通过构造函数创建BigDecimal对象
        BigDecimal big1 = new BigDecimal("1.1");
        BigDecimal big2 = new BigDecimal("2.2");
        BigDecimal big3 = big1.add(big2);
        System.out.println(big3);

        //通过BigDecimal的静态方法valueOf创建BigDecimal对象
        BigDecimal big4 = BigDecimal.valueOf(1.1);
        BigDecimal big5 = BigDecimal.valueOf(2.2);
        BigDecimal big6 = big4.add(big5);
        System.out.println(big6);
    }
}

BigDecimal的创建有个容易出错的地方需要注意,

当通过构造函数创建BigDecimal对象时,如果传入的参数是double类型,计算的精度有可能不准确

所以使用BigDecimal的时候,

如果参数是字符串类型,使用构造函数创建BigDecimal对象;

如果参数是数值类型,则使用BigDecimal.valueOf()方法创建BigDecimal对象,或者先通过toString()方法将参数转化为字符串,再通过构造函数创建BigDecimal对象;

二.BigDecimal的加减乘除

package com.example2.demo;

import org.junit.Test;

import java.math.BigDecimal;

public class BigDecimalTests {
    @Test
    public void testBigDecimal() {
        //BigDecimal的加法运算,通过调用add方法
        BigDecimal add1 = BigDecimal.valueOf(2.2);
        BigDecimal add2 = BigDecimal.valueOf(1.1);
        BigDecimal add3 = add1.add(add2);
        System.out.println(add3);

        //BigDecimal的减法运算,通过调用subtract方法
        BigDecimal sub1 = BigDecimal.valueOf(2.2);
        BigDecimal sub2 = BigDecimal.valueOf(1.1);
        BigDecimal sub3 = sub1.subtract(sub2);
        System.out.println(sub3);

        //BigDecimal的乘法运算,通过调用multiply方法
        BigDecimal mul1 = BigDecimal.valueOf(2.2);
        BigDecimal mul2 = BigDecimal.valueOf(1.1);
        BigDecimal mul3 = mul1.multiply(mul2);
        System.out.println(mul3);

        //BigDecimal的除法运算,通过调用divide方法
        BigDecimal div1 = BigDecimal.valueOf(2.2);
        BigDecimal div2 = BigDecimal.valueOf(1.1);
        BigDecimal div3 = div1.divide(div2);
        System.out.println(div3);
    }
}

BigDecimal的除法有时候会有除不尽的情况,这时就需要精确到固定位数,并需要四舍五入,这里第二个参数需要传入小数位数,

第三个参数需要传入舍入模式,常用的舍入模式有:

ROUND_HALF_UP     四舍五入

ROUND_UP   进一法

ROUND_DOWN 去尾法

三.两个BigDecimal值的比较

使用compareTo方法可以比较两个BigDecimal值的大小,compareTo方法只会比较BigDecimal的数值,而不会比较BigDecimal的小数位数,但是equals方法先会比较小数位数是否相同,相同后才会比较数值

例如new BigDecimal("1.10")和new BigDecimal("1.1"),使用equals比较就是不相等的,因为小数位数一个是2,一个是1

所以推荐使用compareTo方法,

package com.example2.demo;

import org.junit.Test;

import java.math.BigDecimal;

public class BigDecimalTests {
    @Test
    public void testBigDecimal() {
        BigDecimal A = BigDecimal.valueOf(1);
        BigDecimal B = BigDecimal.valueOf(3);
        // A 小于 B, 返回 -1,
        // A 等于 B, 返回 0,
        // A 大于 B, 返回 1
        int result = A.compareTo(B);
        System.out.println(result);
    }
}

总结:

BigDecimal用于表示精确的小数,常用于商业计算

如果参数是String类型,则使用构造函数创建BigDecimal对象,

如果参数是数值类型,则可以通过BigDecimal.valueOf()方法创建BigDecimal对象,其内部原理是通过toString()方法将数值转为字符串,然后调用构造函数;

BigDecimal的加减乘除方法分别为add,subtract,multiply,divide,都可以传入两个参数,一个控制小数位数,一个规定舍入模式

使用compareTo对两个BigDecimal对象进行比较,

例如:A.compareTo(B),

          返回-1代表A小于B,

          返回0代表A等于B,

          返回1代表A大于B

 

最后

以上就是高兴招牌为你收集整理的BigDecimal的基本使用一.BigDecimal的创建二.BigDecimal的加减乘除三.两个BigDecimal值的比较总结:的全部内容,希望文章能够帮你解决BigDecimal的基本使用一.BigDecimal的创建二.BigDecimal的加减乘除三.两个BigDecimal值的比较总结:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部