java biginteger 相减_java 进行超大整数的加减乘除四则运算(自己部分实现BigInteger)...

1

2 public classMyBigInteger {3 privateStringBuffer data;4

5

6 publicMyBigInteger(){7 data = new StringBuffer("0");8 }9 publicMyBigInteger(String str){10 data = newStringBuffer(str);11 }12 publicMyBigInteger(StringBuffer str){13 data = newStringBuffer(str);14 }15

16 public intlength(){17 returndata.length();18 }19 publicString toString(){20 returndata.toString();21 }22

23 public booleanequals(Object obj){24 return data ==((MyBigInteger)obj).data;25 }26

27 /**

28 * 功能:进行两个非负整数的相加29 */

30 privateStringBuffer plusAdd(String strNum1,String strNum2){31 //把两个数字字符串倒置,并存入字符数组

32 char [] num1 = newStringBuffer(strNum1).reverse().toString().toCharArray();33 char [] num2 = newStringBuffer(strNum2).reverse().toString().toCharArray();34 int maxLength =Math.max(num1.length,num2.length);35 int minLength =Math.min(num1.length,num2.length);36 //n位和m位的非负整数相加的和,要么是max(n,m)位,要么是max(n,m)+1位。

37 StringBuffer value = newStringBuffer();38

39 /*--------------计算和数开始------------------------*/

40 int i,jinWei=0;41 for(i=0;i

49 jinWei =oneBitAdd(jinWei,num2,i,maxLength,value);50 if(jinWei != 0)51 value.append((char)(jinWei +'0'));52 /*--------------计算和数结束------------------------*/

53 returndeleteZero(value).reverse();54 }55 /**

56 * 进位加上字符数组一部分57 *@return

58 */

59 private int oneBitAdd(int jinWei,char []array,int beginIndex,intendIndex,StringBuffer value){60 inttemp;61 for(int i = beginIndex;i

69 /**

70 * 功能:较大的非负整数bigNumStr减去较小的非负整数smallNumStr71 */

72 privateStringBuffer plusMinus(String bigNumStr,String smallNumStr){73 //把两个数字字符串倒置,并存入字符数组

74 char [] num1 = newStringBuffer(bigNumStr).reverse().toString().toCharArray();75 char [] num2 = newStringBuffer(smallNumStr).reverse().toString().toCharArray();76 StringBuffer value = newStringBuffer();77

78 /*--------------计算减法开始--------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值