C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
теряюсь в догадках
Dimon.Ru
Отправлено: 24.10.2005, 08:51


Станционный диспетчер

Группа: Участник
Сообщений: 92



Добрый день!

понимаю, что вопрос из разряла ламерских, но я не могу понять откуда она берется.... полдня вчера просидел, но так и не понял.

на строке double a = (rov * 10e-4)/(gammat * pow(dro,2));
вылазит ошибка "Invalid floating point operation"...

не могу понять что там такое....
никогда такой не было. вроде бы типы все соблюдены.

в принципе, ошибка вылазит при попытке совершить какое-либо арифметическое действие и, кстати, при попытке вернуть какое-либо значение из функции. при простом присваивании значения все проходит нормально.

до расчета формулы все переменные объявлены и им присвоены значения.

CODE

double dro, rov, gammat;

rov = jetForm->rovEdit->Text.ToDouble();
gammat = jetForm->gammatEdit->Text.ToDouble();
dro = jetForm->dsoplEdit->Text.ToDouble();

***

double a = (rov * 10e-4)/(gammat * pow(dro,2));


надо сказать, что в месте *** я еще делаю выделение памяти под большой двумерный массив... но если бы там были ошибки, то вылезало бы Access Violation.

Если надо, выложу исходник
AVC
Отправлено: 24.10.2005, 09:19


Ветеран

Группа: Модератор
Сообщений: 1583



Это что то лично ваше. Так все работает.
CODE

#include <math.h>

void __fastcall TF_Main::BitBtn1Click(TObject *Sender)
{
double dro, rov, gammat;
rov = 1;
gammat = 2;
dro = 3;
double a = (rov * 10e-4)/(gammat * pow(dro,2));
ShowMessage(FormatFloat("0.0000000", a));
}
Grigoriy
Отправлено: 24.10.2005, 12:57


Мастер участка

Группа: Участник
Сообщений: 381



Надо бы перед вычислением дроби проверять, не равен ли нулю знаменатель.
Dimon.Ru
Отправлено: 24.10.2005, 13:27


Станционный диспетчер

Группа: Участник
Сообщений: 92



Блин, а что же это может быть?
ну прямо совсем странно.....
** pasha
Отправлено: 25.10.2005, 20:06


Не зарегистрирован







Grigoriy ответил.
Скорее всего (gammat * pow(dro,2)); равно 0
деление на 0

Отловить то легко — в отладчик и все дела.

Вернуться в Вопросы программирования в C++Builder