У меня проблема с вычитанием с переносами на Java.BigInt Вычитание
public BigInt add(BigInt o) {
int carry = 0;
int max = n.length > o.n.length ? n.length : o.n.length;
int[] result = new int[max+1];
for (int i = 0; i <= max; ++i) {
int top = i < n.length ? n[i] : 0;
int bot = i < o.n.length ? o.n[i] : 0;
result[i] = (top + bot + carry) % 10;
carry = (top + bot + carry)/10;
}
return new BigInt(trim(result));
}
public BigInt sub(BigInt o) {
int carry = 0;
int max = n.length > o.n.length ? n.length : o.n.length;
int[] result = new int[max+1];
for (int i = 0; i <= max; ++i) {
int top = i < n.length ? n[i] : 0;
int bot = i < o.n.length ? o.n[i] : 0;
carry = (top + bot + carry)/10;
result[i] = (10 + top - bot - carry) % 10;
}
return new BigInt(trim(result));
}
Я не знаю, что я делаю неправильно? Мой класс добавления работает отлично, но вычитание дает мне странный ответ. Допустим, если я вычитаю 5943-3952, плохо получаю 2091. Когда мы знаем ответ 1991 года. Все мои ответы неверны только в первых двух цифрах. Помогите!!!!
https://ericlippert.com/2014/03/05 /, как в отладку-стрелковая программа / – shmosel