Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

Раота с ограмадными числами.   Найти похожие ветки 

 
markers ©   (2004-11-10 09:19) [0]

Народ подскажите плиз как раотать с числом в 12 знаков и более, Особенно важны такие вещи как, вычесть и одного большого числа другое, Поделить на Tb, Gb, Mb, Kb, b. (Кстати как лучше всего это сделать?), Что самое отвратительное эти два числа крупных с которыми мне нужно работать нахоятся в стринге, а как их сконвентировать в число, так как они такие крупные не знаю... Ведь у интегера есть ограничение....
Вообщем подскажите люди добрые!;) Заранее сенкью;)


 
MBo ©   (2004-11-10 09:29) [1]

Int64 для твоих задач подойдет?


 
markers ©   (2004-11-10 09:32) [2]

Пробовал не получилось, может я чё не то делал?


 
markers ©   (2004-11-10 09:34) [3]

Кусок кода UserD и LimitD сделал дворд таже фигня
        try
        LimitD:=StrToInt(Limit);
        UsedD:=StrToInt(Used);
        Ostatok:=LimitD-UsedD;
        if Ostatok >0 then
         TrafficOctatok.Caption:=IntToStr(Ostatok)
        else TrafficOctatok.Caption:="Трафик закончился";
        except
         on E: Exception do MessageBox(Handle, PChar(E.Message), PChar("ERROR!"), $00000040);
        end;


 
KilkennyCat ©   (2004-11-10 09:40) [4]

гм... да если они стринговые, то с ними и работать можно, как со стрингами... а деление на 1024 делается очень просто, ибо это деление на 2^10 :)


 
KilkennyCat ©   (2004-11-10 09:41) [5]


> markers ©   (10.11.04 09:34) [3]


StrToInt64


 
markers ©   (2004-11-10 09:42) [6]

а как отнять? И как поделить стринг?


 
markers ©   (2004-11-10 09:42) [7]

ропоздал


 
KilkennyCat ©   (2004-11-10 09:45) [8]

отнять никаких проблем... в детском садике учили отнимать столбиком с переносом десятков - то же самое.
Поделить сложнее. но можно.


 
markers ©   (2004-11-10 09:47) [9]

Матюгается что 250000000000000 неверное итегеровое значение.... млин


 
markers ©   (2004-11-10 09:51) [10]

LimitD,UserD,Ostatok: Int64;
        try
        LimitD:=StrToInt64(Limit);
        UsedD:=StrToInt64(Used);
        Ostatok:=LimitD-UsedD;
        if Ostatok >0 then
         TrafficOctatok.Caption:=IntToStr(Ostatok)
        else TrafficOctatok.Caption:="Трафик закончился";
        except
         on E: Exception do MessageBox(Handle, PChar(E.Message), PChar("ERROR!"), $00000040);
        end;


 
begin...end ©   (2004-11-10 09:54) [11]

markers ©   (10.11.04 9:47) [9]

> Матюгается что 250000000000000 неверное итегеровое
> значение....

Ну дык правильно, это выходит за пределы Int64.


 
markers ©   (2004-11-10 09:56) [12]

Ну дык тогда сделать?


 
KilkennyCat ©   (2004-11-10 09:56) [13]

2^63-1 разве выходит?


> IntToStr(Ostatok)
 это что?


 
KilkennyCat ©   (2004-11-10 09:57) [14]

простите, ошибся. пойду спать.


 
markers ©   (2004-11-10 09:58) [15]

KilkennyCat ©   (10.11.04 9:56) [13]
конвентирование в стирнг для вывода остатка трафика


 
KSergey ©   (2004-11-10 09:59) [16]

А может попробовать не в байтах считать? А в чем покрупнее?


 
KilkennyCat ©   (2004-11-10 09:59) [17]


> markers ©   (10.11.04 09:58) [15]


я понял... вначале не понял.


 
begin...end ©   (2004-11-10 10:00) [18]

KilkennyCat ©   (10.11.04 9:57) [14]

Да нет, это я ошибся, действительно не выходит...


 
markers ©   (2004-11-10 10:01) [19]

Подмогите, что сделать то..... :(


 
Реактор   (2004-11-10 10:06) [20]

У меня такая же проблема. Как я понял ничего не сделаешь. Надо свои процедуры писать и создавать новые типы. Это не сложная задача я такое уже делал для TP.
Хотя есть еще один выход. Я тут в инете нарыл калькулятор, который может обсчитывать числа до 200 знаков. Я попросил у хозяина исходник. Если даст, то ничего писать не надо. Просто адаптировать под себя и пользоваться.


 
begin...end ©   (2004-11-10 10:08) [21]

markers ©   (10.11.04 9:47) [9]
Что-то я не пойму...

var
 I, J, K: Int64;
begin
 I := StrToInt64("250000000000000");
 J := StrToInt64("999999999999999");
 ShowMessage(IntToStr(J - I))
end

И у меня усё в порядке, никаких ошибок...


 
markers ©   (2004-11-10 10:09) [22]

жопа...... :( А какое там максимальное значение интегера? Такие числа редко будут встречатся, буду надеятся что не попадутся....


 
markers ©   (2004-11-10 10:10) [23]

сейчас дебаг сделаю посмотрю


 
markers ©   (2004-11-10 10:15) [24]

Странно пять минут проверял не работало, сейчас проверил РАБОТАЕТ;) Ну наконец-то!;)
Остается только разобрать на байты килобайты магабайты и гигабайты
А какое максимальное число возможно при инт64?


 
begin...end ©   (2004-11-10 10:15) [25]

markers ©   (10.11.04 10:09) [22]

> А какое там максимальное значение интегера?

Как верно заметил KilkennyCat ©   (10.11.04 9:56) [13], это значение для Int64 равно 2^63 - 1. Для Integer: 2147483647. А как верно заметил KSergey ©   (10.11.04 9:59) [16], лучше в чём-нибудь другом считать. Или перейти на какой-нибудь из real types...

---------------------
Sorry, I"m drunk now.


 
markers ©   (2004-11-10 10:18) [26]

да врядли оно будет ольше этого, ну по крайней мере сильно больше
Спасибо


 
Думкин ©   (2004-11-10 10:25) [27]

9223372036854775807


 
TUser ©   (2004-11-10 11:03) [28]

Самое правильное - сходить на алголист. Длинная арифметика - там очень популярная тема, и на форуме и статьи лежат хорошие


 
KSergey ©   (2004-11-10 11:23) [29]

> [25] begin...end ©   (10.11.04 10:15)
> Или перейти на какой-нибудь из real types...

А вот это судя по задаче не пойдет. Видимо там надо складывать большие числа с маленькими, и, боюсь, в случае real-типов лимит интернета у пользователей никогда не настанет... ;)


 
Gloomer ©   (2004-11-10 13:03) [30]

Если нужны действительно большие числа, больше чем Int64,
послушай TUser ©   (10.11.04 11:03) [28]
и сходи http://algolist.manual.ru/maths/longnum.php



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.034 c
3-1098150232
Fedia
2004-10-19 05:43
2004.11.21
Быстрый способ заполнения массива данными из Query


9-1090790428
lifo
2004-07-26 01:20
2004.11.21
Поворот сцены


8-1093192962
iudjen
2004-08-22 20:42
2004.11.21
как сделать пианино


1-1099662166
g-l-u-k
2004-11-05 16:42
2004.11.21
Формулы в Memo


14-1099752858
sw
2004-11-06 17:54
2004.11.21
хороший форум по Java





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский