Форум: "Начинающим";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];
ВнизВозведение в квадрат и извлечение квадратного корня Найти похожие ветки
← →
Каныбек (2012-01-01 21:12) [0]С новым годом! Вопрос такой-как возвести в квадрат и извлечь квадратную корень в Делфи. Помогите плиз.
← →
Германн © (2012-01-01 21:39) [1]uses Math
функция Power
← →
Jeer © (2012-01-01 21:46) [2]Подружить квадрат и квадратную - это две половинки одного яблока :)
← →
Jeer © (2012-01-01 21:49) [3]Квадрат:
y := x*x;
Корень:
z := sqrt(y);
← →
RWolf © (2012-01-01 23:43) [4]
> Jeer © (01.01.12 21:49) [3]
> Квадрат:
y:=sqr(x);
← →
Каныбек (2012-01-02 06:14) [5]Спасибо ребята, работает. Удачи в новом году.
← →
Jeer © (2012-01-02 22:25) [6]
> RWolf © (01.01.12 23:43) [4]
Ой, вот не надо штампов, ага ?
Я-то привел варианты разных подходов ради понимания их наличия, всего-то.
← →
Германн © (2012-01-03 02:15) [7]
> Jeer © (02.01.12 22:25) [6]
>
>
> > RWolf © (01.01.12 23:43) [4]
>
>
> Ой, вот не надо штампов, ага ?
> Я-то привел варианты разных подходов ради понимания их наличия,
> всего-то.
>
А я привел универсальный вариант. Нужны ли при этом "прочие разные"?
:)
← →
Германн © (2012-01-03 02:18) [8]Кроме того, мой ответ может кого-то заставить понять/вспомнить, что "возведение в степень" частным случаем включает в себя и "извлечение корня".
:)
← →
Jeer © (2012-01-03 16:36) [9]Есс-но, нужны :)
← →
asail © (2012-01-03 17:40) [10]
> Германн © (03.01.12 02:15) [7]
> А я привел универсальный вариант. Нужны ли при этом "прочие
> разные"?
Однозначно нужны!
При возведении, например, в квадрат Power не самое лучшее решение...
x*x, как минимум, на порядок быстрее Power(x, 2).
Да даже, возведение в пятую степень через Power будет медленнее, чем х*х*х*х*х.
Так что, если в алгоритме вычислений такого рода много, то функцией Power надо пользоваться осмотрительно.
Другое дело, если, скажем, надо возвести число в степень 14.35... :)
← →
RWolf © (2012-01-03 19:36) [11]
> x*x, как минимум, на порядок быстрее Power(x, 2).
именно так, а sqr(x) ещё быстрее.
← →
asail © (2012-01-03 20:13) [12]
> RWolf © (03.01.12 19:36) [11]
> а sqr(x) ещё быстрее
Не всегда. Вот в этом примере * быстрее, чем sqr (Д6, ХР32):const COUNT = 2000000000;
procedure TForm1.Button1Click(Sender: TObject);
var
c, i: Cardinal;
d, x: Double;
begin
x := 2;
c := GetTickCount;
for i := 1 to COUNT do
d := Sqr(x);
ShowMessage(IntToStr((GetTickCount - c) div 1000));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
c, i: Cardinal;
d, x: Double;
begin
x := 2;
c := GetTickCount;
for i := 1 to COUNT do
d := x * x;
ShowMessage(IntToStr((GetTickCount - c) div 1000));
end;
В первом случае 5 сек, во втором - 4...
Хотя, стоит сменить Double на Extended или x * x вынести в отдельную функцию, и ситуация изменится...
← →
Германн © (2012-01-04 02:26) [13]
> asail © (03.01.12 17:40) [10]
>
>
> > Германн © (03.01.12 02:15) [7]
>
> > А я привел универсальный вариант. Нужны ли при этом "прочие
> > разные"?
>
> Однозначно нужны!
Я вообще-то шутил. И мой тёзка понял меня. :)
← →
asail © (2012-01-04 02:46) [14]
> Германн © (04.01.12 02:26) [13]
Да я не сомневаюсь, что ты в курсе всего вышеописанного. Просто, новички этого могут и не знать...
← →
Германн © (2012-01-04 02:59) [15]
> asail © (04.01.12 02:46) [14]
>
>
> > Германн © (04.01.12 02:26) [13]
>
> Да я не сомневаюсь, что ты в курсе всего вышеописанного.
> Просто, новички этого могут и не знать...
Они и не знают. Но универсальная функция им точно поможет! :)
Но и вспомни Германн © (03.01.12 02:18) [8]
Если хоть какой-то из новичков это вспомнит/осознает - это уже плюс!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c