Страница 1 из 1

Тип Extended

Добавлено: 17 дек 2006, 21:25
oif
Вот функция быстрого возвкдения в степень:
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 иил есть другой способ или функция?

Re: Тип Extended

Добавлено: 18 дек 2006, 09:33
somewhere
Ну во-первых не понимаю зачем в параметрах (a,k) стоят столь большие типы (extended), если тут вполне достаточно даже Word.
Во вторых работа с дробной частью в очень больших числах практически бесполезна из-за большой потери точности.
В третьих trunc(o) - дает результат не более Int64 - вот ответ на твой вопрос.
В четвертых есть куда более быстрая и красивая функция возведения в степень работающая на E^X и Ln(X) в модуле Math

Re: Тип Extended

Добавлено: 18 дек 2006, 16:51
oif
somewhere писал(а): Во вторых работа с дробной частью в очень больших числах практически бесполезна из-за большой потери точности.
В третьих trunc(o) - дает результат не более Int64 - вот ответ на твой вопрос.
В четвертых есть куда более быстрая и красивая функция возведения в степень работающая на E^X и Ln(X) в модуле Math
А мне надо выделить остаток от деления именно чисел длиной extended(причем числа только целые.).
Возможно ли это?
somewhere писал(а): В четвертых есть куда более быстрая и красивая функция возведения в степень работающая на E^X и Ln(X) в модуле Math
Это про power?

Re: Тип Extended

Добавлено: 18 дек 2006, 17:08
somewhere
&quot писал(а):Это про power?
Про нее ...
&quot писал(а):А мне надо выделить остаток от деления именно чисел длиной extended(причем числа только целые.).
Возможно ли это?
Смотри тему про работу с БОЛЬШИМИ числами