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

Вниз

переменная   Найти похожие ветки 

 
md   (2004-03-24 22:45) [0]

можно ли создать свою переменную - например integer который бы занимал более 4 байтов


 
panov ©   (2004-03-24 22:47) [1]

Можно, но не integer, а, например, LongInt


 
TButton ©   (2004-03-24 22:47) [2]

нет, но есть готовый int64(8b)


 
YurikGl ©   (2004-03-24 22:48) [3]

Может ему 5 байт надо :)


 
TButton ©   (2004-03-24 22:48) [4]

longint занимает ровно 4 байта =) или я что-то перепутал?


 
TButton ©   (2004-03-24 22:50) [5]

5.2
тока я задумался над вопросом. ему тип нужен или переменная в смысле var? об этом я сразу не подумал, потому что вообще не подумал что на форуме станут спрашивать, можно ли создать переменную... и потом в вопросе сказано "...integer который бы занимал более 4 байтов", что наводит на ассоциации с типом...


 
md   (2004-03-24 22:55) [6]

мне нужно записать число с разрядностью 100


 
YurikGl ©   (2004-03-24 22:55) [7]

re [6] в какой системе? Двоичной?


 
TButton ©   (2004-03-24 22:57) [8]

100 цифр в значащей части. используй строки :) напиши функцию для сложения двух чисел столбиком (не забыл как это делается :), числа у тебя целые, проблем не будет.


 
YurikGl ©   (2004-03-24 22:58) [9]

Можешь исполззовать любой из

Fundamental real types
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8

Правда точность страдает


 
YurikGl ©   (2004-03-24 22:59) [10]

re [8] Проще уж сделать массив int-ов64 и его обрабатывать :)


 
TButton ©   (2004-03-24 22:59) [11]

тока перемножать эти числа не вздумай :) хотя... вздумай :)


 
panov ©   (2004-03-24 23:01) [12]

Сорри, за постинг [1] - заработался.


 
YurikGl ©   (2004-03-24 23:02) [13]

re [11] shl и shr можно пользовать :)


 
md   (2004-03-24 23:03) [14]

мне нужно разделить два таких числа (по 100 цифр кадый) незнаю как реализовать деление если они записаны как строки.


 
YurikGl ©   (2004-03-24 23:04) [15]

re [14] Дели столбиком :)


 
md   (2004-03-24 23:06) [16]

ку 14
если делить я могу делить по частям то делимое как-то неполучается


 
panov ©   (2004-03-24 23:08) [17]

Не надо делитель делить. Его-то как раз надо целиком использовать для деления.


 
YurikGl ©   (2004-03-24 23:08) [18]

Один из путей. Берешь книжку, где описано как выполняет деление микропроцессор и повторяешь описанный алгоритм для чисел большей разрядности.


 
TButton ©   (2004-03-24 23:18) [19]

ку (10)
и чем это проще? проще чем две строки с конца до начала прогнать, генеря по пути 3ю?
см. код


function summ(a, b: string): string;
var
 i, l: integer;
 _a, _b, _c, m: integer;
 c: string;
begin
 c:="";  // результат. пока пустой
 m:=0;   // память
 l:=ABS(length(a)-length(b));
 if l>0 then  //если строки разной длины
 for i:=1 to l do  // уравниваем приписывая к короткой нули
   if length(a)<length(b)
     then a:="0"+a
     else if length(b)<length(a)
       then b:="0"+b;
 l:=length(a);  // берем длину строки
 for i:=l downto 1 do
 begin
   _a:=StrToIntDef(a[i],0);  // цифра 1
   _b:=StrToIntDef(b[i],0);  // цифра 2
   if _a+_b+m>10             // если в сумме (с памятью) больше 10
   then
     begin
       _c:=(_a+_b+m) mod 10; //взяли все что меньше 10
       m:=((_a+_b+m)-_c) div 10; // остальное - в уме (div 10 бо для след. разряда)
     end
   else
     begin
       _c:=_a+_b+m;          // если не больше 10 - просто суммируем
       m:=0;                 // и забываем
     end;
   c:=intToStr(_c)+c;        // приписываем новую цифру в начало строки
 end;  
 if m>0 then c:=c+intToStr(m); // если по концове что-то осталось - тоже приписываем
 result:=c;                  // возвращаем результат
end;


 
TButton ©   (2004-03-24 23:19) [20]

ой. че-т я долго код мастрячил...
ну можно и деление замутить, кстати мне кто-то такой вопрос уже задавал... что-то с курсовым связано...



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.079 c
14-1079425178
able
2004-03-16 11:19
2004.04.11
Люди, зацените сайт


14-1081748022
Ega23
2004-04-12 09:33
2004.04.11
Кстати, о БД


3-1081937395
Vitaliy
2004-04-14 14:09
2004.04.11
Создание dbf таблицы через ADO


6-1076175381
gavrila
2004-02-07 20:36
2004.04.11
TClientSocket &amp; TServerSocket установлено ли подключение?


3-1079495625
vi007
2004-03-17 06:53
2004.04.11
Refresh данных в Interbase