使用Java怎么实现两个大数之间的运算

发布时间:2021-04-12 15:59:50 作者:Leah
来源:亿速云 阅读:119

这期内容当中小编将会给大家带来有关使用Java怎么实现两个大数之间的运算,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

大数相减

import java.util.Scanner;
/*
 进行大数相减,只能对两个正数进行相减
*/
public class BigNumber
{
	public static void main(String[] args)
	  {
		Scanner scan=new Scanner(System.in);
		String a,b;
		while (scan.hasNext())
		    {
			BigNumber big=new BigNumber();
			a=scan.nextLine();
			b=scan.nextLine();
			System.out.println(big.bigNumberSub(a,b));
		}
	}
	public String bigNumberSub(String x,String y)
	  {
		//String result=null;
		char[] a=x.toCharArray();
		char[] b=y.toCharArray();
		int lenA=a.length;
		int lenB=b.length;
		int len=lenA>lenB?lenA:lenB;
		int[] result=new int[len];
		//字符串反转
		char[] A=new char[lenA];
		char[] B=new char[lenB];
		for (int i=0;i<lenA;i++)
		    {
			A[i]=a[lenA-i-1];
		}
		for (int j=0;j<lenB;j++)
		    {
			B[j]=b[lenB-j-1];
		}
		//判断最终结果的正负
		char sign='+';
		if (lenA<lenB)
		    {
			sign='-';
		} else if(lenA>lenB)
		    {
			sign='+';
		} else
		    {
			for (int i=lenA-1;i>=0;i--)
			      {
				if (A[i]<B[i])
				        {
					sign='-';
					break;
				} else if(A[i]>B[i])
				        {
					sign='+';
					break;
				}
			}
		}
		//      
		int aint,bint;
		for (int i=0;i<len;i++)
		    {
			aint=i<lenA?A[i]-'0':0;
			bint=i<lenB?B[i]-'0':0;
			if (sign=='+')
			      {
				result[i]=aint-bint;
			} else 
			      {
				result[i]=bint-aint;
			}
		}
		//借位处理
		for (int j=0;j<len;j++)
		    {
			if (result[j]<0)
			      {
				result[j+1]=result[j+1]-1;
				result[j]=result[j]+10;
			}
		}
		//将结果对应为0的位置取消掉
		StringBuilder sb=new StringBuilder();
		Boolean flag=true;
		//防止结果集中的地位出现0
		if (sign=='-')
		    {
			sb.append(sign);
		}
		for (int i=len-1;i>=0;i--)
		    {
			if (result[i]==0&&flag)
			      {
			} else
			      {
				sb.append(result[i]);
				flag=false;
			}
		}
		return sb.toString();
		//return result;
	}
}

结果:

使用Java怎么实现两个大数之间的运算

在Java中,还可以通过BigInteger类来解决精度问题。

import java.util.Scanner;
import java.math.BigInteger;
/*
 进行大数相加,
*/
public class BigNumber
{
	public static void main(String[] args)
	  {
		Scanner scan=new Scanner(System.in);
		while (scan.hasNext())
		    {
			BigInteger b1=new BigInteger(scan.nextLine());
			BigInteger b2=new BigInteger(scan.nextLine());
			System.out.println(b1.add(b2));
			//System.out.println(000);
		}
	}
}

结果

使用Java怎么实现两个大数之间的运算

接着再看一则代码示例:

/**
 * 大数运算
 * BigInteger
 * 求91的5次方
 * 求它除以100的余数
 * 大数运算Biginteger类的方法调用
 */
package com.test1;
import java.math.*;
import java.math.BigInteger;
public class test100 {
 
  /**
   * @param args
   */
  static BigInteger k=BigInteger.valueOf(1);
  static BigInteger j=BigInteger.valueOf(91);
  static BigInteger n;
  BigDecimal l=new BigDecimal("100");
  static BigInteger m=new BigInteger("100");
  public static void main(String[] args) {
    // TODO Auto-generatedmethod stub
   
//   k=BigInteger.valueOf(1);
//   k=new BigInteger("1");
    for(int i=1;i<=5;i++){
      k=k.multiply(j);
      System.out.println(k.toString());
//     n=k.remainder(m);
      n=k.remainder(m);
      System.out.println(n.toString());
      
    }
 
  }
 
}

结果:

使用Java怎么实现两个大数之间的运算

上述就是小编为大家分享的使用Java怎么实现两个大数之间的运算了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. C++实现大数运算
  2. 实现大数四则运算

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:怎么在Yii框架中对session与cookie进行操作

下一篇:怎么在java中实现线程间通信

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》