BigDecimal和BigInteger常用方法

这篇博客探讨了在Java中进行高精度计算的重要性,通过示例展示了double类型的精度问题,并对比了BigDecimal和BigInteger两个类在处理高精度计算时的优势。BigDecimal用于精确的浮点数运算,避免了二进制表示导致的误差;而BigInteger适用于大数据的整数运算,例如计算阶乘。文章通过测试用例详细展示了这两个类的使用方法。
摘要由CSDN通过智能技术生成
package demo.api;

import org.junit.Test;

import java.math.BigDecimal;
import java.math.BigInteger;

public class BigDecimal和BigInteger {

    /**
     * double只适合科学计算法
     */
    @Test
    public void testDouble() {
        double d1 = 0.1;
        double d2 = 0.006;
        System.out.println(d1 + d2);//0.10600000000000001
        double d3 = 2.0;
        double d4 = 1.1;
        //二进制运算导致的误差, 二进制的1/10,十进制的1/3
        System.out.println(d3 - d4);//0.8999999999999999
    }

    /**
     * BigDecimal适合高精度计算
     */
    @Test
    public void testBigDecimal() {
        //两种赋值方法
        BigDecimal d1 = new BigDecimal("0.1");
        BigDecimal d2 = BigDecimal.valueOf(0.006);
        System.out.println("加:" + d1.add(d2));
        System.out.println("减:" + d1.subtract(d2));
        System.out.println("乘:" + d1.multiply(d2));
        //divide(商,几位小数,如何舍取    ROUND_HALF_UP向上取舍)
        System.out.println("除:" + d1.divide(d2, 10, BigDecimal.ROUND_HALF_UP));
        //原数不变(转换为double类型显示)
        System.out.println("d1: " + d1.doubleValue());
        System.out.println("d2: " + d2.doubleValue());
    }

    /**
     * BigInteger 大数据运算
     */
    @Test
    public void testBigInteger() {
        BigInteger b1 = new BigInteger("1");
        for (int i = 1; i <= 21; i++) {
            BigInteger bi = BigInteger.valueOf(i);
            b1 = b1.multiply(bi);
        }
        System.out.println("21的阶乘:" + b1);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值