#前提
被减数比减数要大,并且都为整数
public class BigDataCompute {
public static void main(String[] args) {
String a = "123";
String b = "30";
subtraction(a, b);
}
public static void subtraction(String a, String b) {
//翻转被减数和减数,从低位开始计算
char[] numA = new StringBuilder(a).reverse().toString().toCharArray();
char[] numB = new StringBuilder(b).reverse().toString().toCharArray();
int[] result = new int[numA.length];
for (int i = 0; i < result.length; i++) {
int intA = i < numA.length ? numA[i] - '0' : 0;
int intB = i < numB.length ? numB[i] - '0' : 0;
result[i] = intA - intB;
}
//借位逻辑如果结果指针中存在负数,说明该位置向前借位了,处理借位
for (int i = 0; i < result.length; i++) {
if (result[i] < 0) {
result[i + 1] -= 1;
result[i] += 10;
}
}
StringBuilder sbr = new StringBuilder();
boolean bool = true;
for (int i = result.length - 1; i >= 0; i--) {
if (result[i] == 0 && bool) {
continue;
}else{
bool=false;
}
sbr.append(result[i]);
}
System.out.println(sbr);
}
}