计算两个字符串的减法运算 1/**
2 * 两个⼤数相减,默认没有符号位,且都为正数
3 *
4 * @param a
5 * @param b
6 * @return
7*/
8public static String bigDigitalSub(String a, String b) {
9//翻转字符串并转化成数组
10char[] aArray = new StringBuilder(a).reverse().toString().toCharArray();
11char[] bArray = new StringBuilder(b).reverse().toString().toCharArray();
12int aLength = aArray.length;
13int bLength = bArray.length;
14//到最⼤的位数,两个整数的差的位数⼩于等于两个整数中的最⼤位数
15int maxLength = aLength > bLength ? aLength : bLength;
16int[] result = new int[maxLength];
17//判断结果符号
18char sign = '+';
19if (aLength < bLength) sign = '-';
20else if (aLength == bLength) {
21int i = maxLength - 1;
22while (i > 0 && aArray[i] == bArray[i])
23 i--;
24if (aArray[i] < bArray[i])
25 sign = '-';
26 }
27//开始计算结果集
28for (int i = 0; i < maxLength; i++) {
29int aInt = i < aLength ? aArray[i] - '0' : 0;
30int bInt = i < bLength ? bArray[i] - '0' : 0;
31if (sign == '-') result[i] = bInt - aInt;
32else result[i] = aInt - bInt;
33 }
34//处理结果集,如果结果集中的某⼀位⼩于0,则向⾼位借位,然后将本位加10
35for (int i = 0; i < maxLength - 1; i++) {
36if (result[i] < 0) {
37 result[i + 1] -= 1;
38 result[i] += 10;
39 }
40 }
41
42//处理结果集,转化成真正结果
string字符串转化数组43 StringBuffer realResult = new StringBuffer();
44if (sign == '-') realResult.append('-');
45boolean isBeginning = true;
46for (int i = maxLength - 1; i >= 0; i--) {
47if (result[i] == 0 && isBeginning) continue;
48else isBeginning = false;
49 realResult.append(result[i]);
50 }
51if (String().equals("")) realResult.append('0');
String();
53 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论