处理Java中的高精度问题,BigIntegeer与BigDecimal

BigInteger

不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

基本运算

//加
BigInteger add(long var1);
//减
BigInteger subtract(BigInteger var1);
//乘
BigInteger multiply(BigInteger var1);
//除
BigInteger divide(BigInteger var1);
//取余(结果需要大于0,否则会抛出异常)
BigInteger mod(BigInteger var1);
//求余
BigInteger remainder(BigInteger var1);
//平方
BigInteger pow(int var1);
//取绝对值
BigInteger abs();
//取相反数
BigInteger negate();
//转成var1进制的字符
String toString(int var1);
//转换成基本数据类型
int intValue();
long longValue();
floatValue();
doubleValue();

二进制运算

//与 &
BigInteger and(BigInteger var1);
//或 |
BigInteger or(BigInteger var1);
//异或 ^
BigInteger xor(BigInteger var1);
//取反
BigInteger not();
//左移n位
BigInteger shiftLeft(BigInteger var1);

BigDecimal

不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。

基本运算

//加
BigDecimal add(BigDecimal value); 
//减
BigDecimal subtract(BigDecimal value);
//乘
BigDecimal multiply(BigDecimal value);   
//除 第一个参数是除数,第二个是保留小数点,第三个是小数处理方式
BigDecimal divide(BigDecimal var1, int var2, int var3);
//求余
BigDecimal remainder(BigDecimal divisor);
//最大值
BigDecimal max(BigDecimal value);
//最小值
BigDecimal min(BigDecimal value);
//绝对值
BigDecimal abs();
//相反数
BigDecimal negate();

在这里插入图片描述

区别

Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值