Java大数加减乘除,阶乘以及高精度幂

2 篇文章 0 订阅

BigInteger:大数整型

BigDecimal:大数浮点型

add():加法

subtract():减法

mutiply():乘法

divide():除法

compareTo():比较

stripTrailingZeros():除去后面无用的0

toPlainString():变成字符串

substring():字符串截取

大数加法:

public static void jia(BigInteger a,BigInteger b) {//大数加法
	       BigInteger c=a.add(b);
	       System.out.println(c);
	}

大叔减法:

public static void jian(BigInteger a,BigInteger b) {//大数减法
	       BigInteger c=a.subtract(b);
	       System.out.println(c);
	}

大数乘法:

public static void cheng(BigInteger a,BigInteger b) {//大数乘法
	       BigInteger c=a.multiply(b);
	       System.out.println(c);
	}

大数除法:

public static void chu(BigInteger a,BigInteger b) {//大数除法
	       BigInteger c=a.divide(b);
	       System.out.println(c);
	}

大数比较:

public static void bijiao(BigInteger a,BigInteger b) {//大数比较
	       if(a.equals(BigInteger.ZERO)&&b.equals(BigInteger.ZERO)){
	    	   System.out.println("两个数都等于0!");
	       }
	       else {
	    	   int flag=a.compareTo(b);
	    	   if(flag==1) {
	    		   System.out.println(a+">"+b);
	    	   }
	    	   else if(flag==0) {
	    		   System.out.println(a+"="+b);
	    	   }
	    	   else if(flag==-1) {
	    		   System.out.println(a+"<"+b);
	    	   }
	       }
	       
	}

大数阶乘:

public static void jiecheng() {//大数阶乘
		
	      BigInteger ans=BigInteger.ONE;
	      int n=cin.nextInt();
	      for(int i=1;i<=n;i++) {
	    	  ans=ans.multiply(BigInteger.valueOf(i));
	      }
	      System.out.println(ans);
	}

大数高精度幂:

public static void gaojingdu() {//高精度幂
		while(cin.hasNext()) {
			 BigDecimal ans=cin.nextBigDecimal();//BigDecimal相当于double,但是精度更高
			 int n=cin.nextInt();
			 String res=ans.pow(n).stripTrailingZeros().toPlainString();//先计算ans的n次方得到结果,再去除后面无用的0,比如5.100变成5.1
			 if(res.startsWith("0")){//去掉前导0.比如0.01564变成.01564
				 res=res.substring(1);
			 }
			 System.out.println(res);
		}
		
	}

大数转换进制:

public static void change() {
		while(cin.hasNext())//相当于EOF
		{
			String str=cin.nextLine();
			BigInteger a=new BigInteger(str,10);//将string转换为10进制
			System.out.println(a.toString(2));//将a转换为2进制
		}
		cin.close();
	}

大数循环:

BigInteger m =new BigInteger("1380000000");
            BigInteger start=new BigInteger("1370000000");
            BigInteger one=new BigInteger("1");
            int msgid=0;
            for(BigInteger n=start;n.compareTo(m)<0;n=n.add(one)){
                msgid++;

            }
            System.out.println("所有数为"+msgid);

完整代码:

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	public static Scanner cin=new Scanner(System.in);
	public static void jia(BigInteger a,BigInteger b) {//大数加法
	       BigInteger c=a.add(b);
	       System.out.println(c);
	}
	public static void jian(BigInteger a,BigInteger b) {//大数减法
	       BigInteger c=a.subtract(b);
	       System.out.println(c);
	}
	public static void cheng(BigInteger a,BigInteger b) {//大数乘法
	       BigInteger c=a.multiply(b);
	       System.out.println(c);
	}
	public static void chu(BigInteger a,BigInteger b) {//大数除法
	       BigInteger c=a.divide(b);
	       System.out.println(c);
	}
	public static void bijiao(BigInteger a,BigInteger b) {//大数比较
	       if(a.equals(BigInteger.ZERO)&&b.equals(BigInteger.ZERO)){
	    	   System.out.println("两个数都等于0!");
	       }
	       else {
	    	   int flag=a.compareTo(b);
	    	   if(flag==1) {
	    		   System.out.println(a+">"+b);
	    	   }
	    	   else if(flag==0) {
	    		   System.out.println(a+"="+b);
	    	   }
	    	   else if(flag==-1) {
	    		   System.out.println(a+"<"+b);
	    	   }
	       }
	       
	}
	
	public static void jiecheng() {//大数阶乘
		
	      BigInteger ans=BigInteger.ONE;
	      int n=cin.nextInt();
	      for(int i=1;i<=n;i++) {
	    	  ans=ans.multiply(BigInteger.valueOf(i));
	      }
	      System.out.println(ans);
	}
	
	public static void gaojingdu() {//高精度幂
		while(cin.hasNext()) {
			 BigDecimal ans=cin.nextBigDecimal();//BigDecimal相当于double,但是精度更高
			 int n=cin.nextInt();
			 String res=ans.pow(n).stripTrailingZeros().toPlainString();//先计算ans的n次方得到结果,再去除后面无用的0,比如5.100变成5.1
			 if(res.startsWith("0")){//去掉前导0.比如0.01564变成.01564
				 res=res.substring(1);
			 }
			 System.out.println(res);
		}
		
	}
	
    public static void main(String args[]) {
    	BigInteger a=cin.nextBigInteger();
	    BigInteger b=cin.nextBigInteger();
	   
	    jia(a,b);
	    jian(a,b);
	    cheng(a,b);
	    chu(a,b);
	    bijiao(a,b);
	    jiecheng();
	   
	    
	    gaojingdu();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值