Напишем маленькую программку(Console App)
var
I,K: Ineteger;
Begin
I := 100000;
K := round(sqrt( sqr(I) ));
WriteLn('k=',K);
ReadLn;
End;
Как вы думаете что будет выведено?Максимальный размер Integer 2147483647 т.е 2*10^10
Будет выведено 37551. Мы думаем что это связано что когда в функцию sqrt поступает Integer там происходит переполнение.
Если бы I было типа Real то все нормально.
Sqrt Function, Интересный факт |