欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-18 10:22:28
java中两个大数之间的相关运算及biginteger两段实例代码,具体如下。 大数相减 import java.util.scanner; /* 进行大...

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代码示例

在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代码示例

接着再看一则代码示例:

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

java小程序计算圆周率代码

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

上一篇:

下一篇: