BigInteger和BigDecimal有什么区别?

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的区别是什么?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值