Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как работать с числами больше максимального значения Number? (http://www.flasher.ru/forum/showthread.php?t=180420)

Universe 02.06.2012 22:16

Как работать с числами больше максимального значения Number?
 
У меня есть число с 20ю нулями. Как мне сохранить его в переменную и производить мат. вычисления с ним?

silin 02.06.2012 22:34

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

mayakwd 02.06.2012 22:40

BigInt

HardCoder 02.06.2012 22:41

Работать с малыми числами умноженными на 10 в степени "n"?
Код AS3:

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

Цитата:

Сообщение от silin (Сообщение 1082622)
а что мешает работать с 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

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


Часовой пояс GMT +4, время: 11:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.