Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
1-1099567818
тт
2004-11-04 14:30
2004.11.21
Есть dcu-файл можно-ли из него получить pas-файл и как?


3-1098194755
Vir
2004-10-19 18:05
2004.11.21
список значений поля


6-1094031477
TankMan
2004-09-01 13:37
2004.11.21
Почему не пускает меня?


1-1100122006
SkyNet
2004-11-11 00:26
2004.11.21
Чужая программа и её самовосстанавливающаяся переменная


1-1099554115
speed
2004-11-04 10:41
2004.11.21
system tray