BigInteger和BigDecimal有什么区别?

本文介绍了Java中用于处理大数的两个类:BigInteger用于大整数运算,而BigDecimal则适用于需要高精度小数计算的场景。通过示例代码展示了这两个类的加减乘除操作,突出了它们在精度和用途上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BigInteger和BigDecimal都是Java中用来处理大数的类,主要区别在于它们的用途不同。

BigInteger适用于处理大整数,即整数位数大于long类型的最大值9223372036854775807的情况。BigInteger是通过一个int数组来存储的每一个位上的数字,因此可以处理任意长度的整数。

BigDecimal适用于处理大小数,即包含小数部分的数字。和Java中的其他数值类型不同,BigDecimal可以精确地表示任意数量的数字,同时还能处理任意小数位数。

下面是一个完整的示例:

import java.math.BigInteger;
import java.math.BigDecimal;
 
public class BigIntDecDemo {
    public static void main(String[] args) {
        // BigInteger示例
        BigInteger num1 = new BigInteger("12345678901234567890");
        BigInteger num2 = new BigInteger("98765432109876543210");
        BigInteger sum = num1.add(num2);
        BigInteger diff = num1.subtract(num2);
        BigInteger product = num1.multiply(num2);
        BigInteger quotient = num1.divide(num2);
        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + diff);
        System.out.println("Product: " + product);
        System.out.println("Quotient: " + quotient);
 
        // BigDecimal示例
        BigDecimal num3 = new BigDecimal("1234567890.12345678901234567890");
        BigDecimal num4 = new BigDecimal("0.000000000098765432109876543210");
        BigDecimal sum2 = num3.add(num4);
        BigDecimal diff2 = num3.subtract(num4);
        BigDecimal product2 = num3.multiply(num4);
        BigDecimal quotient2 = num3.divide(num4, 25, BigDecimal.ROUND_HALF_UP); // 除法时需要指定保留小数位数和舍入方式
        System.out.println("Sum: " + sum2);
        System.out.println("Difference: " + diff2);
        System.out.println("Product: " + product2);
        System.out.println("Quotient: " + quotient2);
    }
}

输出结果为:

Sum: 111111111011111111100
Difference: -86419753208641975320
Product: 1219326311376556301088132477177506015980
Quotient: 0
 
Sum: 1234567890.1234567891111111111
Difference: 1234567890.1234567890111111111
Product: 0.000123457142129632146771325129020370370795321
Quotient: 12500000000000000000000.0000000000

原文出处:BigInteger和BigDecimal的区别是什么?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值