首页 > 编程 > Java > 正文

Java中两个大数之间的相关运算及BigInteger代码示例

2019-11-26 10:54:09
字体:
来源:转载
供稿:网友

Java中两个大数之间的相关运算及BigInteger两段实例代码,具体如下。

大数相减

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中,还可以通过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);		}	}}

结果

接着再看一则代码示例:

/** * 大数运算 * 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中两个大数之间的相关运算及BigInteger代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

java算法实现红黑树完整代码示例

java实现的各种排序算法代码示例

Java小程序计算圆周率代码

如有不足之处,欢迎留言指出。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表