Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с прибавлением (https://javascript.ru/forum/misc/27265-problema-s-pribavleniem.html)

Pavel M. 11.04.2012 11:36

Маэстро,
попробуйте библиотеки для работы с большими числами
например
<script src="http://www.leemon.com/crypto/BigInt.js"></script>
<script>

	var big1 = str2bigInt('999999999999999999999999999', 10, 0);
		big2 = str2bigInt('1000000', 10, 0),
		big3 = mult(big1, big2); // умножаем

	alert(bigInt2str(big3, 10));

</script>

Маэстро 11.04.2012 12:01

Цитата:

Сообщение от Pavel M. (Сообщение 168255)
попробуйте библиотеки для работы с большими числами

За информацию о библиотеке спасибо. Никогда не пользовался.

Но, библиотека - лишние 50 KByte, а главное, что к сожалению Ваш пример на тест
'999999999999999999999999999'
возвращает
'999999999999999999999999999000000' (с лишними нулями).
Возможно надо попробовать брать длину исходной строки и после преобразования обрезать длину результирующей строки до длины исходной.
Однако есть и другие неприятности, например реакция на всякие undefined, null, NaN,...

Думаю, что следует пойти по следующему пути в два шага:
1. преобразовать входную величину x в строку.
2. проверить с помощью regexp.test() наличие в x только символов цифр (0...1). При наличии только символов цифр оставить исходную строку без изменений, в противном случае присвоить ей '0'.

Pavel M. 11.04.2012 12:04

Цитата:

Сообщение от Маэстро
а главное, что к сожалению Ваш пример на тест
'999999999999999999999999999'
возвращает
'999999999999999999999999999000000' (с лишними нулями).

смотрите внимательно код
я умножил '999999999999999999999999999' на 1000000
чтобы продемонстрировать операции с большими числами

Маэстро 11.04.2012 12:45

Pavel M., да, простите, я сначала это видел, а потом чем-то отвлекся и на момент тестирования Вашей функции уже забыл ;)

Маэстро 11.04.2012 15:28

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 168301)
чего тебе не ясно еще?

Мне всё ясно. В частности с Вами.

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 168301)
я тебе дал функцию которая делает то что ты просил? почему тема еще не закрыта?

Ваша функция НЕ ВЫПОЛНЯЕТ то, что я просил.


Часовой пояс GMT +3, время: 00:38.