Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Внизпеременная Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c