вычитание длинных чисел
Добрый день!
Задача: найти разность двух неотрицательных чисел /* функция находит разность * 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, время: 18:24. |