вычитание длинных чисел
Добрый день!
Задача: найти разность двух неотрицательных чисел /* функция находит разность * arr1 - большее число * arr1 - меньшее число * len - длина большего числа */ Ребят, кто подскажет что у меня не так:
function subtraction(arr1,arr2,len) {
var arrResult = [];
arr1 = arr1.reverse();
arr2 = arr2.reverse();
for(var i=0; i < len; ++i) { // инициализируем 0 результативный массив
arrResult[i] = 0;
}
for(var i=0; i<len; ++i) {
if(i < len-1) {
arr1[i + 1] -= 1;
arrResult[i] = 10 + arr1[i];
} else {
arrResult[i] += arr1[i];
}
if(!isNaN(arr2[i])) {
arrResult[i] -= arr2[i]; // вычитаем
}
if(arrResult[i] / 10 > 0) {
arrResult[i] %= 10;
if(i < len - 1) {
arrResult[i + 1] += 1;
}
}
}
return arrResult;
}
Заранее, спасибо) |
большие числа вычитание
croatoan,
Вариант ...
var max = "10000000000000000000000000000" , min = "911";
function difference(max, min) {
max = max.split('')
.reverse();
min = min.split('')
.reverse();
var len = max.length,
result = [];
for (var i = 0, b = 0, c = 0; i < len; i++) {
b = max[i] - (min[i] || 0) + c;
result[i] = b < 0 ? (c = -1, 10 + b) : (c = 0, b)
}
return result.reverse()
.join('')
.replace(/^0+/, '');
}
alert(difference(max,min) )
|
рони, круто! :)
вот только ведущие 0 появляются... 12345 - 12342 = 00003 Не могли бы вы пояснить тело цикла? Большое Вам спасибо, рони!!! |
Цитата:
коментарии пас ))) медитируйте пока не просветлеет - может придумаите лучше |
| Часовой пояс GMT +3, время: 16:11. |