PDA

Просмотр полной версии : Как работать с числами больше максимального значения Number?


Universe
02.06.2012, 22:16
У меня есть число с 20ю нулями. Как мне сохранить его в переменную и производить мат. вычисления с ним?

silin
02.06.2012, 22:34
нужен пример проблемы, в какой ситуации не получается работать с таким числом

mayakwd
02.06.2012, 22:40
BigInt (http://dl.************/u/26653792/BigInt.as)

HardCoder
02.06.2012, 22:41
Работать с малыми числами умноженными на 10 в степени "n"?
var a:String = "2 934 233 586 999 000 000 000 000 000 000";
var b:Object = {"numb":2.934233586999, "degree":30};
расчеты проводить с параметром numb - 2.934233586999.
Но всегда помнить, что a - это число 2.934233586999 * 10^degree (т.е. a = 2.934233586999 * 10 в тридцатой степени)

silin
02.06.2012, 22:47
>> Но всегда помнить, что a - это число 2.934233586999 * 10^degree (т.е. a = 2.934233586999 * 10 в тридцатой степени)
а что мешает работать с 2.934233586999e30 ?

HardCoder
02.06.2012, 22:49
а что мешает работать с 2.934233586999e30 ?Не знаю. Никогда не приходилось работать с числами с плавающей точкой. Как-то сложно они мне даются :)

wvxvw
02.06.2012, 22:53
Очень большая потеря точности. Нет смысла, тем более, что в BigInt реализованы уже нужные математические методы (ну, может не все, но вряд ли вам нужно будет косинус от него считать).
И тем более, что некоторые методы можно оптимизировать для больших чисел, например, остаток от деления.

Universe
03.06.2012, 01:18
нужен пример проблемы, в какой ситуации не получается работать с таким числом
Нужно передать в библиотеку kontagent id пользователя вКонтакте. Контагент как параметр принимает только цифру, поэтому законвертить id в строку не получится. Я вобще не понимаю какого было делать такие здоровенные idшки? Почему нельзя было просто каждому новому пользователю ставить id ++ ? :)

expl
03.06.2012, 01:44
Стоп, если передавать по http протоколу то тут 2 варианта:
- либо строка GET/POST и тогда никаких проблем
(это если они 64 бита поддерживают вконтактовские, если нет - генерируем маленькие айдишники через свою базу)
- либо бинарник, тогда:
1. amf отпадает, т.к. не поддерживает таких чисел
2. либо kontagent предоставляет бинарный формат, поддерживающий такие числа и мы пишем кодировщик строки в этот формат
3. либо не поддерживает - и, опять же, подымаем свою базу данных, чтобы выдавала маленькие айдишники по большим вконтактовским

Я это всё к чему: как орифметические операции с большими числами здесь помогут?

wvxvw
03.06.2012, 02:40
Что значит цифру? Цифра это не тип аргумента. Наверное просто строку нужно.