资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java大数的减法代码 大数的加减乘除代码

JAVA大数相减

既然是“大数”,那就可能出现BigInteger长度不够的情况,所以不能直接使用楼上的方法。

成都创新互联成立于2013年,先为大宁等服务建站,大宁等地企业,进行企业商务咨询服务。为大宁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

关于“大数”的定义,需要楼主提供问题细节:

1.被减数、减数是否会出现负数

2.结果是否会出现负数

负数情况可先转化为绝对值的加减,然后根据大小关系为结果添加正负号解决。所以,暂时先讨论最简单、最基本的情况即 a,b都为正整数,且ab的情况

1.建议把两个数组改成倒序排列 这样相减时可以由a[0]和b[0]开始,即int[] a = { 7, 0, 1, 8, 5, 3, 7 }; int[] b = { 2, 4, 7, 4, 5};

2.遍历两个数组a和b,a[i]-b[i],够减则直接把结果存入a[i],不够减则a[i]+10-b[i]存入a[i],并且a[i+1]=a[i+1]-1,(这里如果不够减,再借位a[i+1]=a[i+1]+10-1;a[i+2]=a[i+2]-1,以此类推,可用递归实现)遍历至b.length结束,然后再将a[i]倒序输出,即为结果。

求JAVA代码,要求输入两个数,实现超大数的相加和相减

package test;

public class DoubleTest {

/**

* @param args

*/

public static void main(String[] args) {

System.out.println(Long.MAX_VALUE);//最大数:9223372036854775807

System.out.println(Long.MIN_VALUE);//最小数:-9223372036854775808

System.out.println(Double.MAX_VALUE);//最大数:1.7976931348623157E308

System.out.println(Double.MIN_VALUE);//最小数:4.9E-324

Double a = 9223372036854775807d;

Double b = 9223372036854775807d;

Double c =a+b;

System.out.println(c);

}

}

用Double型吧。最大了。

运用JAVA中大数类实现大数的四则运算

import java.math.BigInteger;

public class BigIntegerGet {

public String getAdd(String Str1,String Str2){

String Str3=new String();

BigInteger BigInt1=new BigInteger(Str1);

BigInteger BigInt2=new BigInteger(Str2);

BigInt1=BigInt1.add(BigInt2);

Str3=BigInt1.toString();

return Str3;

}

public String getSubtract(String Str1,String Str2){

String Str3=new String();

BigInteger BigInt1=new BigInteger(Str1);

BigInteger BigInt2=new BigInteger(Str2);

BigInt1=BigInt1.subtract(BigInt2);

Str3=BigInt1.toString();

return Str3;

}

public String getMultiply(String Str1,String Str2){

String Str3=new String();

BigInteger BigInt1=new BigInteger(Str1);

BigInteger BigInt2=new BigInteger(Str2);

BigInt1=BigInt1.multiply(BigInt2);

Str3=BigInt1.toString();

return Str3;

}

public String getDivide(String Str1,String Str2){

String Str3=new String();

BigInteger BigInt1=new BigInteger(Str1);

BigInteger BigInt2=new BigInteger(Str2);

BigInt1=BigInt1.divide(BigInt2);

Str3=BigInt1.toString();

return Str3;

}

}

java.求两个大数的精确加减法,a=4632864832684683568465765487657665765236465244

花了十分钟,亲手给你订制的,测试过了正确

下面给你贴出源代码

public class AddSub {

public static void main(String[] args) {

String a="4632864832684683568465765487657665765236465244";

String b="47";

int []pa=stringToInts(a);

int []pb=stringToInts(b);

String ans_add=add(pa, pb);

String ans_sub=sub(pb,pa);

System.out.println("相加结果是:"+ans_add);

System.out.println("相减结果是:"+ans_sub);

}

public static int[] stringToInts(String s){

int[] n = new int[s.length()];

for(int i = 0;is.length();i++){

n[i] = Integer.parseInt(s.substring(i,i+1));

}

return n;

}

public static String add(int []a,int []b){

StringBuffer sb=new StringBuffer();

int a_len= a.length-1;

int b_len=b.length-1;

int jinwei=0;//进位

while(a_len=0||b_len=0){

int temp=0;

if(a_len=0b_len=0){

temp=a[a_len]+b[b_len]+jinwei;

}else if(a_len=0){

temp=a[a_len]+jinwei;

}else if(b_len=0){

temp=b[b_len]+jinwei;

}

sb.append(temp%10+"");

jinwei=temp/10;

a_len--;b_len--;

}

return getNum(sb.reverse());

}

public static String sub(int []a,int []b){

StringBuffer sb=new StringBuffer();

boolean flag=false;//判断a是不是比b小

if(a.lengthb.length){

int c[]=a;

a=b;b=c;

flag=true;

}

int a_len= a.length-1;

int b_len=b.length-1;

int jiewei=0;//借位

while(a_len=0||b_len=0){

int temp=0;

if(a_len=0b_len=0){

if((a[a_len]-jiewei)b[b_len]){

temp=a[a_len]+10-b[b_len]-jiewei;

jiewei=1;

}else{

temp=a[a_len]-b[b_len]-jiewei;

}

}else if(a_len=0){

temp=a[a_len]-jiewei;

jiewei=0;

}

sb.append(temp+"");

a_len--;b_len--;

}

if(flag){

return getNum(sb.append("-").reverse());

}

return getNum(sb.reverse());

}

//去掉最前面的0

public static String getNum(StringBuffer sb){

while(sb.length() 1 sb.charAt(0) == '0') {

sb.deleteCharAt(0);

}

return sb.toString();

}

}


网页题目:java大数的减法代码 大数的加减乘除代码
网站网址:http://cdkjz.cn/article/hijoid.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220