Java中两个大数之间的相关运算及BigInteger代码示例
2017-11-20 10:10
791 查看
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代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
如有不足之处,欢迎留言指出。
您可能感兴趣的文章:
相关文章推荐
- POJ 1220 (两种任意进制之间的转换(大数),java的BigInteger)
- 九度+大数运算+Java直接调用BigInteger,注意必须定义的是Main类OJ才过
- java 计算两个大数之间的乘积(非BigDecimal版)
- 两个大数之间的相关运算
- java中进行高精度、大数运算总结BigInteger BigDecimal
- JAVA大数处理(BigInteger,BigDecimal)
- 【正整数模板运算(C++手写BigInteger类和java.math.BigInteger以及java.math.BigDecimal)】
- java代码两个数组的并运算
- java-Spring jdbcTemplete datasource相关代码示例
- java中biginteger和bigdecimal在大数计算中的使用
- JAVA 大数(BigInteger) 归纳总结 .
- 【Java】-BigInteger大数类的使用【超强Java大数模板 总结】
- Java 小例子:不通过逻辑运算和类库,比较两个 integer 大小
- JAVA大数处理(BigInteger,BigDecimal)
- Java BigInteger(大数,ACM比赛专用)
- java常用类库续2(大数操作BigInteger、BigDecimal类、对象克隆技术、Arrays类)
- java 重新抛出异常 相关处理结果示例代码
- android客户端和java服务端之间用socket来传输图片(示例代码)
- 收藏的一段关于java大数运算的代码
- android客户端和java服务端之间用socket来传输图片(示例代码)