java实现超大数加减乘除四则运算Word文档下载推荐.docx

上传人:b****5 文档编号:16104449 上传时间:2022-11-20 格式:DOCX 页数:23 大小:23.43KB
下载 相关 举报
java实现超大数加减乘除四则运算Word文档下载推荐.docx_第1页
第1页 / 共23页
java实现超大数加减乘除四则运算Word文档下载推荐.docx_第2页
第2页 / 共23页
java实现超大数加减乘除四则运算Word文档下载推荐.docx_第3页
第3页 / 共23页
java实现超大数加减乘除四则运算Word文档下载推荐.docx_第4页
第4页 / 共23页
java实现超大数加减乘除四则运算Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

java实现超大数加减乘除四则运算Word文档下载推荐.docx

《java实现超大数加减乘除四则运算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java实现超大数加减乘除四则运算Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

java实现超大数加减乘除四则运算Word文档下载推荐.docx

*@paramnumStr1数1

*@paramnumStr2数2

*@return结果

publicstaticStringadd(StringnumStr1,StringnumStr2){

intnumLen1=numStr1.length();

intnumLen2=numStr2.length();

int[]numArray1=newint[numLen1];

//数字数组

int[]numArray2=newint[numLen2];

//"

12345"

->

[5,4,3,2,1]

for(inti=0;

i<

numLen1;

i++){

Stringc=numStr1.substring(i,i+1);

numArray1[numLen1-i-1]=Integer.parseInt(c);

//低位存字符串尾部数字

}

numLen2;

Stringc=numStr2.substring(i,i+1);

numArray2[numLen2-i-1]=Integer.parseInt(c);

intminLen=0;

//取长度小的数位数

intmaxLen=0;

//取长度大的数位数

int[]maxArray=null;

//长度大的数

if(numLen1<

numLen2){

minLen=numLen1;

maxLen=numLen2;

maxArray=numArray2;

}else{

minLen=numLen2;

maxLen=numLen1;

maxArray=numArray1;

int[]resultArray=newint[maxLen+1];

//考虑到可能会进位,多给一个元素空间

//两数长度相同的部分,同位相加,超出9进1

intadded=0;

inti=0;

for(;

minLen;

intt=numArray1[i]+numArray2[i]+added;

//两数相加,再加进位

if(t>

9){

added=1;

//进1

resultArray[i]=t-10;

//当前位计算结果

added=0;

//不进位

resultArray[i]=t;

//长度超出部分累加

maxLen;

intt=maxArray[i]+added;

//多余位数加上进位

resultArray[i]=added;

//最高位

//拼接结果[1,4,8,2,0]->

2841

StringBuilderbuilder=newStringBuilder();

for(intn=resultArray.length-1;

n>

=0;

n--){

//如果最高位为0,移除

if(n==resultArray.length-1&

&

resultArray[resultArray.length-1]==0){

continue;

//跳过

builder.append(resultArray[n]);

returnbuilder.toString();

*两非负整数相减

publicstaticStringsubtract(StringnumStr1,StringnumStr2){

//数值大的数

if(numLen1==numLen2){//等于

maxArray=getMaxNumber(numArray1,numArray2);

int[]minArray=maxArray==numArray1?

numArray2:

numArray1;

//数值小的数

int[]resultArray=newint[maxLen];

//大数-小数,同位相减,小于0借位

intsubtracted=0;

intt=maxArray[i]-minArray[i]-subtracted;

//两数相减,再减借位

if(t<

0){

subtracted=1;

//向高位借1,暂存起来

resultArray[i]=t+10;

//当前位计算结果(借1相当于借了10)

subtracted=0;

//不借位

//大数超出部分减掉借位

intt=maxArray[i]-subtracted;

//多余位数减掉借位

booleanhighBitNotEqualZero=false;

//存在高位不为0的情况,低位0保留

//如果高位为0,移除

if(resultArray[n]==0&

!

highBitNotEqualZero&

n!

=0){//高位无用的0去除

highBitNotEqualZero=true;

//找到不为0的位

if(maxArray==numArray1){//第一个数大或相等

}else{//第一个数小于第二个数,相减为负数

builder.insert(0,"

-"

);

*两非负整数相乘

publicstaticStringmultiply(StringnumStr1,StringnumStr2){

intminLen

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1