Java之------大数(BigInteger,BigDecimal)

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

BigInteger中要申明一个整数需要用类似申明一个对象的方法,比方说整数1,就要这样子:BigInteger  x =new BigInteger(""+1);或者BigInteger x = BigInteger.valueOf(1L);
下面用代码来说话吧:
import java.math.BigInteger;  
  
public class BigIntegerDemo {  
  
    public static void main(String[] args) {  
        //这种方式是错的:BigInteger x = 1;  
          
        //大数中的1---法1:  
        BigInteger x = new BigInteger(""+1);  
        System.out.println(x.intValue());  
          
        // 100!  
       BigInteger a = jc(100);  
       System.out.println(a.toString());  
       System.out.println(a.toString(16));//以指定进制的方式输出  
    }  
    public static BigInteger jc( int n){  
        /*求n的阶乘---基本数据类型的写法 
        int s=1; 
        for(int i=1;i<=n;i++){ 
            s = s*i; 
        } 
        return s; 
        */  
          
        //求n的阶乘---大数类型的写法  
        //大数中的1---法2:  
        BigInteger s = BigInteger.valueOf(1L);  
        for(int i=1;i<=n;i++){  
            s = s.multiply( BigInteger.valueOf(i) );  
        }  
        return s;  
    }  
} 


2、java.math.BigDecimal类
不可变的、任意精度的有符号十进制数。 BigDecimal由任意精度的整数非标度值和32位的整数标度(scale: 以10为底的指数)。
BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString( )方法提供 BigDecimal 的规范表示形式。 

申明一个数的方法与BigInteger类似
下面还是在代码里面具体地说吧:
import java.math.BigDecimal;  
  
public class BigDecimalDemo {  
  
    public static void main(String[] args) {  
        double s = 0;  
        for(int i=0;i<10;i++){  
            s = s+0.1;  
        }  
        System.out.println("s="+s);  
          
        BigDecimal d = new BigDecimal(0D);  
        for(int i=0;i<10;i++){  
            d = d.add( new BigDecimal(0.1D));  
            //BigDecimal加法的表示方式  
        }  
        System.out.println("d="+d);  
        System.out.println(d.doubleValue());  
        //doubleValue()方法将此 BigDecimal 转换为 double。默认保留一位小数  
          
        double dd = 12.12345667774332D;  
        BigDecimal bd = new BigDecimal(dd);  
          
        //保留7位小数且四舍五入  
        //下面的ROUD_UP舍入远离零的舍入模式。在丢弃非零部分之前始终增加数字。注意,此舍入模式始终不会减少计算值的大小。  
        bd = bd.divide(new BigDecimal(1.0), 7, BigDecimal.ROUND_UP);  
          
        System.out.println(bd.doubleValue());  
    }  
}



2、java.math.BigDecimal类
不可变的、任意精度的有符号十进制数。 BigDecimal由任意精度的整数非标度值和32位的整数标度(scale: 以10为底的指数)。
BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString( )方法提供 BigDecimal 的规范表示形式。 

申明一个数的方法与BigInteger类似
下面还是在代码里面具体地说吧:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值