首页 > 其他 > 详细

大数(BigDecimal和BigInteger)

时间:2021-07-19 14:50:43      阅读:16      评论:0      收藏:0      [点我收藏+]

大数(BigDecimal和BigInteger)

之前说到了,浮点数由于计算机浮点表示方法会有精度丢失问题,那涉及到浮点数的情况时(如银行卡金额),该怎么样进行运算呢?

我们可以使用Java.math 包下的两个类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值,前者实现任意精度的整数运算,后者实现任意精度的浮点数运算。

使用静态valueof方法将普通数值转换为大数

BigInteger bigInteger = BigInteger.valueOf(100);

对于非常大的数,可以使用带字符串参数的构造方法

BigInteger bigInteger = new BigInteger("123154674816531354684651354135413535241");

由于数字类型的改变,之前的运算符无法满足大数的运算,所以要用这个两个类提供的add(),divide(),multiply(),subtract()分别对应+,/,*,-

例子,求在n个数字中抽取k个数字的概率

public class Demo2 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入你想抽取的k个数字");
       int k= scanner.nextInt();
       System.out.println("请输入最大的数字n");
       int n= scanner.nextInt();
       BigInteger chance =  BigInteger.valueOf(1);
       for (int i = 1; i <= k; i++) {
           chance = chance.multiply(BigInteger.valueOf(n-i+1)).divide(BigInteger.valueOf(i));
      }
       System.out.println("在"+n+"个数字中抽取"+k+"个数据的概率为1/"+chance+",祝你好运");
  }
}

 

大数(BigDecimal和BigInteger)

原文:https://www.cnblogs.com/kanx1blog/p/15029805.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!