Главная страница
    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.037 c
6-1094809027
Samael6
2004-09-10 13:37
2004.11.21
MS Exchange Server чтение базы данных


1-1100076201
hgd
2004-11-10 11:43
2004.11.21
Как скопировать все файлы из папки в другую папку и


3-1098888430
NATA
2004-10-27 18:47
2004.11.21
Qreport


3-1097755678
Настенька
2004-10-14 16:07
2004.11.21
сохранение новой ширины колонки


4-1097476689
DelphiN!
2004-10-11 10:38
2004.11.21
Свернуть все окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский