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类来解决精度问题。
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代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
如有不足之处,欢迎留言指出。