java存大数和高精度浮点数(BigInteger与BigDecimal)

BigInteger与BigDecimal

BigInteger

背景: Integer 类作为 int 的包装类,能存储的最大的整数值为 2^31 - 1, Long类也是有限的,最大为 2^63 - 1. 如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。

java.math包的BigInteger 可以表示不可变的任意精度整数BigInteger 提供所有 Java的基本整数操作符的对应物,并提供 java.lang.Math的所有方法相关。另外,BigInteger 还提供一下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。

构造器

  • BigInteger(Sring val): 根据字符串构建BigInteger对象

测试

  • public class Main {
    
        public static void main(String[] args) {
            BigInteger bigInteger = new BigInteger("214125151526734574578548484845854845");
            System.out.println(bigInteger);
    
        }
    
    }
    
  • 输出

  • 214125151526734574578548484845854845
    
BigDecimal

背景: 一般的Float类和Double类可以用来做科学计算或者工程计算,但是在 商业计算中,要求数字精度比较高,故用 *java.math.BigDecimal

BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

构造器

  • public BigDecimal(double val);
  • public BigDecimal(String val);

常用方法

  • public BigDecimal add(BigDecimal augend); 加法
  • public BigDecimal substract(BigDecimal subtrahend); 减法
  • public BigDecimal multiply(BigDecimal multiplicand); 乘法
  • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode); 除法

测试

  • import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            BigDecimal bigDecimal = new BigDecimal("15.1231241251512512512521");
            BigDecimal bigDecimal1 = new BigDecimal("11.121");
    
            System.out.println(bigDecimal.add(bigDecimal1));
            System.out.println(bigDecimal.subtract(bigDecimal1));
            System.out.println(bigDecimal.multiply(bigDecimal1));
            // 要求保留15位小数, BigDecimal.ROUND_HALF_DOWN四舍五入
            System.out.println(bigDecimal1.divide(bigDecimal, 15, BigDecimal.ROUND_HALF_DOWN));
    
        }
    
    }
    

注意: 如果出现java.lang.ArithmeticException则表示除不尽,各可以规定保留小数位数,或者进位模式(四舍五入)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值