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

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小程序计算圆周率代码

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

以上是 Java中两个大数之间的相关运算及BigInteger代码示例 的全部内容, 来源链接: utcz.com/p/214946.html

回到顶部