Форум: "Основная";
Текущий архив: 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