Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Извлечь квадратный корень 
:(
    Опции темы
asdnmg7sdkw
Дата 30.10.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 17.8.2007

Репутация: нет
Всего: нет



При извлечении квадратного корня вылетает ошибка "invalid floating point operation".
Код

var
  x2,x1,y2,y1,aa,bb : integer;
begin
  x2 := 144299;
  x1 := 85708;
  y2 := 118994;
  y1 := 147703;
  bb := SQR(x2 - x1) + SQR(y2 - y1);
  aa := round(int(SQRT(bb)));

Помогите избежать этой ошибки.
PM MAIL   Вверх
hihi
Дата 30.10.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



y1 больше чем y2  smile 
PM MAIL   Вверх
Alexeis
Дата 30.10.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



hihi, а сколько будет (-1) * (-1) ?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 30.10.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



asdnmg7sdkw, нельзя корень из отрицательного вычислять, сохраняй знак.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 30.10.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Rennigth @  30.10.2007,  11:14 Найти цитируемый пост)
нельзя корень из отрицательного вычислять, сохраняй знак.

  А откуда ему взяться? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 30.10.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(Alexeis @  30.10.2007,  11:17 Найти цитируемый пост)
А откуда ему взяться?  

Я просто под отладкой посмотрел,  получается отрицательным, сейчас внимательней пример посмотрел, походу переполняется Integer.

Добавлено через 2 минуты и 46 секунд
или не... чем голова с утра тупит, но bb отрицательное smile


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 30.10.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Rennigth @  30.10.2007,  11:20 Найти цитируемый пост)
походу переполняется Integer.

  Точно! Числа больше 32000 нельзя в квадрат возводить..


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 30.10.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Вот:
Код

var
  x2, x1, y2, y1, aa, bb : Extended;
begin
  x2 := 144299;
  x1 := 85708;
  y2 := 118994;
  y1 := 147703;
  bb := SQR(x2 - x1) + SQR(y2 - y1);
  aa := Round(Sqrt(bb));
end;



Добавлено через 2 минуты и 53 секунды
Цитата(Alexeis @  30.10.2007,  11:30 Найти цитируемый пост)
Числа больше 32000 нельзя в квадрат возводить

Не, можно (покрайней мере в турбе), единственное странное что Int64 непомог, только Extended... ?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 30.10.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Хм.. странно пишут, что есть 3 перегрузки
Код

1 function Sqr ( Number : Integer ) : Integer;
2 function Sqr ( Number : Int64 ) : Int64;
3 function Sqr ( Number : Extended ) : Extended;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 30.10.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(Alexeis @  30.10.2007,  12:02 Найти цитируемый пост)
Хм.. странно пишут, что есть 3 перегрузки

В семерке пишут что две:
Цитата

function Sqr(X: Extended): Extended;
function Sqr(X: Integer): Integer;

в турбе вообще что одна:
Цитата

[Delphi] function Sqr(X: Real): Extended;

Ты где смотрел?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 30.10.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



фууу какой позор! функция function Sqr ( Number : Int64 ) : Int64; не вызывается вообще! Вместо нее вызывается function Sqr ( Number : Integer ) : Integer; ! Вправду говорят, что Int64 в делфях глючный!

Добавлено через 1 минуту и 23 секунды
Цитата(Rennigth @  30.10.2007,  12:09 Найти цитируемый пост)
Ты где смотрел? 

  Да погуглил в книжке одной. Справка вообще тут не рулит. На самом деле Sqr это вообще не функция, а макрос...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 30.10.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(Alexeis @  30.10.2007,  12:13 Найти цитируемый пост)
фууу какой позор! функция function Sqr ( Number : Int64 ) : Int64;

мдя... Кстати точно такая же ситуация была с функцией val в шестерке.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
asdnmg7sdkw
Дата 30.10.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 17.8.2007

Репутация: нет
Всего: нет



Спасиб за помощь  smile . Что-то про переполнение переменной я не подумал.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.