Тип Extended
Добавлено: 17 дек 2006, 21:25
Вот функция быстрого возвкдения в степень:
function pow(a,k:extended):extended;
var b:extended;
begin
b:=1;
while k<>0 do begin
if trunc(k) mod 2=0 then begin
k :=trunc(k) div 2;
a:=trunc(a*a)
end
else begin
k:=k-1;
b:= trunc(b*a)
end;
end;
pow:=b;
end;
Почему когда
var z,o:extended;
o:=pow(10,4500);
все считает,а если сделать z:=trunc(o) (для дальнейшего деления по модулю),выдает ошибку, если o = до 10^18 то считает,дальше ошибка.Почему?
Хотя тип extended максимальное значение 1.1*10^4932
Как найти остаток от деления очень большого числа.(т.е extened mod extended)?
Как правильно использовать mod с типом extended иил есть другой способ или функция?
function pow(a,k:extended):extended;
var b:extended;
begin
b:=1;
while k<>0 do begin
if trunc(k) mod 2=0 then begin
k :=trunc(k) div 2;
a:=trunc(a*a)
end
else begin
k:=k-1;
b:= trunc(b*a)
end;
end;
pow:=b;
end;
Почему когда
var z,o:extended;
o:=pow(10,4500);
все считает,а если сделать z:=trunc(o) (для дальнейшего деления по модулю),выдает ошибку, если o = до 10^18 то считает,дальше ошибка.Почему?
Хотя тип extended максимальное значение 1.1*10^4932
Как найти остаток от деления очень большого числа.(т.е extened mod extended)?
Как правильно использовать mod с типом extended иил есть другой способ или функция?