Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2015, 07:37
Новичок на форуме
Отправить личное сообщение для chainikd Посмотреть профиль Найти все сообщения от chainikd
 
Регистрация: 14.05.2015
Сообщений: 4

Помогите разобраться с библиотекой long.js
Нужно посчитать факториал числа. Пока result меньше 170 то считает нормально, но когда больше, в поле выводит infinite. Нашел в инете long.js для работы с длинными числами, но не могу разобраться. Ниже в коде я пытаюсь присвоить переменной long результат функции long.js не выходит. Прошу помощи
var result =1;
var r=200;
for (var i=1; i<=r; i++){
result = result * i;
};
var long = Long.fromNumber(result);
$("#text").val(long);// Вывод на текстовое поле результат
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2015, 08:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от chainikd
long.js
что это?
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2015, 09:28
Новичок на форуме
Отправить личное сообщение для chainikd Посмотреть профиль Найти все сообщения от chainikd
 
Регистрация: 14.05.2015
Сообщений: 4

я так понял что библиотека для представления 64-го числа.
https://www.npmjs.com/package/long
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2015, 09:29
Новичок на форуме
Отправить личное сообщение для chainikd Посмотреть профиль Найти все сообщения от chainikd
 
Регистрация: 14.05.2015
Сообщений: 4

Может есть иные способы решить мою задачу?
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2015, 09:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Длинные числа, факториал
chainikd,
ой
<script>
function diff(max, min) {
    max = max.split("").reverse();
    min = min.split("").reverse();
    var len = Math.max(max.length, min.length),
        result = [];
    for (var i = 0, b = 0, c = 0; i <= len; i++) {
        b = (+max[i] || 0) + (+min[i] || 0) + c;
        result[i] = b > 9 ? (c = 1, b - 10) : (c = 0, b)
    }
    return result.reverse().join("").replace(/^0+/, "")
}

function sum(x, y) {
    var res = "0";
    for (var i = 0; i < y; i++) res = diff(res, "" + x);
    return res
}
var re = /(?=\B(?:\d{3})+(?!\d+))/g;
var result = "1";
var r = 200;
for (var i = 1; i <= r; i++) {
    result = sum(result, "" + i);
    document.write(i + " => " + result.replace(re, " ") + "<br><hr>")
};
</script>

Последний раз редактировалось рони, 14.05.2015 в 09:59.
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2015, 13:42
Новичок на форуме
Отправить личное сообщение для chainikd Посмотреть профиль Найти все сообщения от chainikd
 
Регистрация: 14.05.2015
Сообщений: 4

рони,
Спасибо большое)))
Буду разбираться)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с this uroboros7 jQuery 4 02.01.2015 00:56
Помогите разобраться с калькулятором Maksim858 Ваши сайты и скрипты 1 27.12.2014 13:23
Получение ответа сервера через iframe и xhr. Помогите разобраться. Arconas AJAX и COMET 0 26.02.2013 10:38
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24