Просмотр полной версии : Как работать с числами больше максимального значения Number?
Universe
02.06.2012, 22:16
У меня есть число с 20ю нулями. Как мне сохранить его в переменную и производить мат. вычисления с ним?
нужен пример проблемы, в какой ситуации не получается работать с таким числом
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 в тридцатой степени)
>> Но всегда помнить, что a - это число 2.934233586999 * 10^degree (т.е. a = 2.934233586999 * 10 в тридцатой степени)
а что мешает работать с 2.934233586999e30 ?
HardCoder
02.06.2012, 22:49
а что мешает работать с 2.934233586999e30 ?Не знаю. Никогда не приходилось работать с числами с плавающей точкой. Как-то сложно они мне даются :)
Очень большая потеря точности. Нет смысла, тем более, что в BigInt реализованы уже нужные математические методы (ну, может не все, но вряд ли вам нужно будет косинус от него считать).
И тем более, что некоторые методы можно оптимизировать для больших чисел, например, остаток от деления.
Universe
03.06.2012, 01:18
нужен пример проблемы, в какой ситуации не получается работать с таким числом
Нужно передать в библиотеку kontagent id пользователя вКонтакте. Контагент как параметр принимает только цифру, поэтому законвертить id в строку не получится. Я вобще не понимаю какого было делать такие здоровенные idшки? Почему нельзя было просто каждому новому пользователю ставить id ++ ? :)
Стоп, если передавать по http протоколу то тут 2 варианта:
- либо строка GET/POST и тогда никаких проблем
(это если они 64 бита поддерживают вконтактовские, если нет - генерируем маленькие айдишники через свою базу)
- либо бинарник, тогда:
1. amf отпадает, т.к. не поддерживает таких чисел
2. либо kontagent предоставляет бинарный формат, поддерживающий такие числа и мы пишем кодировщик строки в этот формат
3. либо не поддерживает - и, опять же, подымаем свою базу данных, чтобы выдавала маленькие айдишники по большим вконтактовским
Я это всё к чему: как орифметические операции с большими числами здесь помогут?
Что значит цифру? Цифра это не тип аргумента. Наверное просто строку нужно.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.