Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.11.2011, 17:53
Змей Змей вне форума
Прохожий
 
Регистрация: 03.11.2011
Сообщения: 18
Репутация: 10
По умолчанию При возведении в квадрат получается отрицательное число

Вот такая проблема. Вот код:
Код:
  i,j:integer;
  data: array of integer;
  okno: array of array of integer;
  E: array of array of  integer;

procedure TForm1.Button1Click(Sender: TObject);
begin

setlength(data,10000);
setlength(okno,199);
setlength(E,199);
for i:=0 to (10000-1) do
data[i]:=i+1;
for i:=0 to (trunc(199-1)) do
begin
setlength(okno[i],100);
setlength(E[i],1);
for j:=0 to (100-1) do
   begin
   okno[i,j]:=data[i*50+j];
   E[i,0]:=E[i,0]+sqr(okno[i,j]);

   if i=160 then
   begin
   memo1.Lines.Add(inttostr(sqr(okno[i,j])));
   memo2.Lines.Add(inttostr(E[i,0]));
   end;

   end;
end;
end;
end.
Некоторые значения в Memo2 получаются отрицательные,хотя не должны.
Причем если не использовать возведение в квадрат(красным), то все работает как и должно.
Пока писал пост смекнул что возможно при возведении в квадрат число слишком большое выходит и не помещается в integer, поменял его на int64 и все нормально заработало, я уже стал праздновать победу, но для дальнейшей проверки ввел другие данные:
Код:
for i:=0 to (10000-1) do
data[i]:=i+1;
data[1002]:=1000000;
И на 20-ом окне опять вылез минус
Мало того, еще и в Memo1 на месте где должен был быть 1000000000000 стоит рандомное отрицательное значение! А ведь int64 должен поддерживать такое число.
Что делать?
Ответить с цитированием
  #2  
Старый 26.11.2011, 19:50
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Юзай extended.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025