![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возведение в квадрат
Andrey K © (2012-08-07 16:28:00)Почему:
var
i: integer;
i1: double;
begin
i := 100000;
i1 := sqr(i);
end;
Результат: i1=1410065408 ???
Anatoly Podgoretsky (2012-08-09 08:36:00) [1]> Германн (09.08.2012 02:30:13) [13]
Хватит и одного, достаточно возвести в квадрат.
Германн (2012-08-09 02:30:00) [2]
> Jeer © (08.08.12 21:49) [12]
>
>
> > А эта прога со спутниками никак не связана?
>
>
> Да и пусть "связана" со спутниками.
> Важнее,чтобы не была связана с атомщиками :)
У атомщиков всё-таки меньше программистов, но больше железячников! :)
Jeer (2012-08-08 21:49:00) [3]
> А эта прога со спутниками никак не связана?
Да и пусть "связана" со спутниками.
Важнее,чтобы не была связана с атомщиками :)
NoUser (2012-08-08 21:43:00) [4]А эта прога со спутниками никак не связана? Ж)
Andrey K (2012-08-07 23:58:00) [5]Спасибо всем за помощь. Прога работала уже лет семь. Я считал её отлаженной. Ан нет.
AV (2012-08-07 17:13:00) [6]
> i1 := Sqr(Extended(i));
>
> Плюсы, минусы, подводные камни?
D7 Invalid typecast
Anatoly Podgoretsky (2012-08-07 16:59:00) [7]> ProgRAMmer Dimonych (07.08.2012 16:56:07) [7]
Зачем, когда проще I: Extended;
ProgRAMmer Dimonych (2012-08-07 16:56:00) [8]Интересно, кстати, мнение коллег по поводу варианта
i1 := Sqr(Extended(i));
Плюсы, минусы, подводные камни?
Anatoly Podgoretsky (2012-08-07 16:54:00) [9]> Andrey K (07.08.2012 16:49:05) [5]
Ту, которая Extended
Для этого смени тип с Integer на Extended
Да и включи проверку переполнения в компиляторе
Andrey K (2012-08-07 16:49:00) [10]Про это я читал. А как использовать ту?
Anatoly Podgoretsky (2012-08-07 16:42:00) [11]> Andrey K (07.08.2012 16:30:01) [1]
Потому что их две функции с одинаковым именем, ты используешь не ту.
Andrey K (2012-08-07 16:39:00) [12]Спасибо. А то у меня уже мозг снесло.
MBo (2012-08-07 16:36:00) [13]Вычисления проводятся с целым типом, происходит переполнение, а приведение к double - уже потом.
i1 := i;
i1 := Sqr(i1);
Andrey K (2012-08-07 16:30:00) [14]И как с этим бороться?