两个大数之间的相关运算
2016-08-13 10:50
183 查看
大数相减
在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); } } }
相关文章推荐
- Java中两个大数之间的相关运算及BigInteger代码示例
- 两个大数相加比较符合自然运算的算法
- java 计算两个大数之间的乘积(非BigDecimal版)
- 在oracle中在两个整型值之间执行按位逻辑与运算的运算符是什么?类似sql中的
- C语言中两个指针之间的运算
- 实现一个用分子分母的格式来表示有理数的结构体rational以及相关的函数,rational结构体之间可以做加减乘除运算,运算的结果仍然是rational
- java循环练习:手动输入两个数字m和n,运算求出m~n之间所有偶数的和
- ZOJ 1205题解本来是一道大数运算水题,可是却纠结了很久,原因是没能真正读懂题意,要求的计算必须是一一对应输出即使前面出现几个0最后也要把前面的0输出,看别人用C++自己还是两个都提交了结果还是C占的内存少。
- SQL 关于地图两个坐标点之间的距离运算
- 手动输入两个数字m和n,运算求出m~n之间所有偶数的和
- 写4个同名方法,实现两个整数、两个实数,一个实数一个整数,一个整数一个实数之间的求和。在主调函数中调用这4个方法计算相关的值。(方法的重载)
- 两个指针之间的运算
- 两个大数相加比较符合自然运算的算法
- 两个不相关Activity之间的通信
- 两个不相关界面之间跳转
- 在两个ASP.NET页面之间传递值的方法
- [原创]怎样从两个列表之间传值??
- 采用分治法进行大数乘法运算
- VB中使用DDE实现两个应用程序之间的通讯
- 如何计算两个空间向量之间的转角