acos: DOMAIN ERROR
Всем здравствуйте!
В моей программе (borland c++) u находится следующим образом: x = StrToFloat(Edit1->Text); u = acos(x); и exe-шик выдает ошибку: acos: DOMAIN ERROR math.h подключена, область определения acos [-1;1]. Подозреваю, что дело тут в том, что для acos x должно быть типа double. Но как перевести float x в double x? Или как сделать так, чтобы x сразу считывалось как double? |
А какие ты числа вводишь в Edit1?
Вот такой вот код прекрасно работает при числах -1..1: Код:
#include <vcl.h> |
5pliT, спасибо за ответ.
Ваш код работает. Но в моей программе все равно выдается та же ошибка. В ней я считываю х, подставляю его в формулу double z = f(x), а потом беру acos(z). Провожу проверку того, что z из [-1;1] : Код:
if(z>1 || z<-1){Edit9->Text = FloatToStr(z);}; У кого-нибудь есть идеи почему он себя так странно ведет? Чтобы все работало было просто дописано: Код:
if(z>1){ z=1;}; |
Както не нравится мне ваша проверочка, поробуйте лучше такую:
x>=-1.0 && x<=1.0 |
А если вы введете в EditBOx букву, как ваша программа будет работать? Вылетит в exception? Я бы вашем месте предварительно делал проверку на соответствие типа (вроде isDouble) вводимых данных, в случае положительного ответа уже плясал бы дальше. А то, может вы вводите число, а оно конвертируется функцией неверно? Может, конечно, я сильно привык к C#, но конструкция double x = StrToFloat довольно странна. Float и Double все таки разные типы данных.
|
Время: 18:27. |
Время: 18:27.
© OSzone.net 2001-