Java - 常用类 - BigInteger 和 BigDecimal

BigInteger 和 BigDecimal 介绍

应用场景

  1. BigInteger适合保存比较大的整型
  2. BigDecimal适合保存精度更高的浮点型(小数)
package com.tao.biginteger_;

import java.math.BigInteger;

/**
 * Create By 刘鸿涛
 * 2022/1/3 23:14
 */
public class BigInteger_ {
    public static void main(String[] args) {
        //Long 不够用时
        long l = 2323232454587787877L;  //不能再加了!!
        System.out.println("l = " + l);

        //BigInteger
        BigInteger bigInteger = new BigInteger("464664648574744464646464646464");//注意引号
        System.out.println(bigInteger);
        //1.在对 BigInteger 进行加减乘除的时候,需要使用对应的方法,不能直接进行 + - * /
        //2.创建一个要操作的 BigInteger 然后进行相应的操作
        BigInteger add_ = new BigInteger("1");
        add_ = bigInteger.add(add_);
        System.out.println(add_);

        BigInteger subtract_ = bigInteger.subtract(add_);
        System.out.println(subtract_);

        BigInteger bigInteger1 = new BigInteger("1");
        BigInteger multiply_ = bigInteger.multiply(bigInteger1);
        System.out.println(multiply_);

        BigInteger divide_ = bigInteger.divide(bigInteger1);
        System.out.println(divide_);
        
    }
}

l = 2323232454587787877
464664648574744464646464646464
464664648574744464646464646465
-1
464664648574744464646464646464
464664648574744464646464646464

package com.tao.biginteger_;

import java.math.BigDecimal;

/**
 * Create By 刘鸿涛
 * 2022/1/3 23:33
 */
public class BigDecimal_ {
    public static void main(String[] args) {
        //当我们需要保存一个精度很高的数时,double 不够用
        //可以使用 BigDecimal
        double d = 1999.111111111111111111111111111111d;
        System.out.println(d);  //1999.111111111111
        BigDecimal bigDecimal = new BigDecimal("1999.11");
        System.out.println(bigDecimal);

        //1.如果对 BigDecimal 进行运算,比如 + - * /,需要使用对应的方法
        //2.需要创建一个需要操作的 BigDecimal 然后调用相应方法
        BigDecimal bigDecimal1 = new BigDecimal("1.1");
        System.out.println(bigDecimal.add(bigDecimal1));
        System.out.println(bigDecimal.subtract(bigDecimal1));
        System.out.println(bigDecimal.multiply(bigDecimal1));
//        System.out.println(bigDecimal.divide(bigDecimal1)); //可能抛出异常,因为除不尽
        //解决方案
        //在调用divide方法时,指定精度即可,BigDecimal.ROUND_CEILING
        //如果有无限循环小数,就会保留 分母的 精度
        System.out.println(bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));
    }
}

1999.111111111111
1999.11
2000.21
1998.01
2199.021
1817.38

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: BigInteger转换为BigDecimal可以通过BigDecimal的构造函数来实现,将BigInteger作为参数传递给BigDecimal构造函数即可。 例如: BigInteger bigInteger = new BigInteger("12345678901234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); 这样就将BigInteger型的bigInteger转换为了BigDecimal型的bigDecimal。 ### 回答2: BigIntegerBigDecimal都是Java中处理大数的BigInteger表示不可变的任意精度整数,而BigDecimal表示不可变的任意精度十进制数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造方法来完成转换。BigDecimal的构造方法接受一个BigInteger型的参数,可以直接将BigInteger转换为相应的BigDecimal对象。 以下是将BigInteger对象转换为BigDecimal对象的示例代码: ```java BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); ``` 上述代码中,首先创建了一个BigInteger对象bigInteger,其值为"1234567890"。然后使用BigDecimal的构造方法将bigInteger转换为相应的BigDecimal对象bigDecimal。 通过以上代码,我们成功将BigInteger对象转换为BigDecimal对象。这样就可以继续使用BigDecimal提供的各种方法进行高精度的数值计算。 需要注意的是,由于BigDecimal表示的是十进制数,而BigInteger表示的是整数,所以在转换时可能会导致精度的损失或受到舍入模式的影响。因此,在进行大数计算时,需要根据具体的需求选择合适的转换方式和精度控制。 ### 回答3: 在Java中,BigIntegerBigDecimal是数字处理中非常常用的两个BigInteger用于处理任意长度的整数,而BigDecimal用于处理任意精度的小数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造函数。BigDecimal有一个可以接受BigInteger值的构造函数,这样可以将BigInteger的值转换为BigDecimal。 以下是一个简单的示例代码,演示如何将BigInteger转换为BigDecimal: ```java import java.math.BigDecimal; import java.math.BigInteger; public class BigIntegerToBigDecimal { public static void main(String[] args) { BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); System.out.println("BigInteger: " + bigInteger); System.out.println("BigDecimal: " + bigDecimal); } } ``` 在上述示例中,我们首先创建了一个BigInteger对象(bigInteger),并将其初始化为1234567890。然后,我们使用BigDecimal的构造函数将bigInteger转换为BigDecimal(bigDecimal)。最后,我们将bigIntegerbigDecimal的值输出到控制台上。 输出结果: BigInteger: 1234567890 BigDecimal: 1234567890 通过这种方式,我们可以将BigInteger转换为BigDecimal,用于处理高精度的小数计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值