Тип Extended

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
oif
Сообщения: 42
Зарегистрирован: 09 ноя 2006, 21:03

Вот функция быстрого возвкдения в степень:
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 иил есть другой способ или функция?
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

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

somewhere писал(а): Во вторых работа с дробной частью в очень больших числах практически бесполезна из-за большой потери точности.
В третьих trunc(o) - дает результат не более Int64 - вот ответ на твой вопрос.
В четвертых есть куда более быстрая и красивая функция возведения в степень работающая на E^X и Ln(X) в модуле Math
А мне надо выделить остаток от деления именно чисел длиной extended(причем числа только целые.).
Возможно ли это?
somewhere писал(а): В четвертых есть куда более быстрая и красивая функция возведения в степень работающая на E^X и Ln(X) в модуле Math
Это про power?
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

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