Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 15.06.2014
Сообщений: 96
1

Отключить NAN

22.09.2017, 04:27. Показов 1935. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При переносе своего кода из Delphi 2010 в Delphi 10.1 Update 2 столкнулся с проблемой.

Алгоритм построен по принципу вложенной обработки исключений при решении кубического уравнения
A * X3 + B * X2 + C * X + D = 0

Используется конструкция вида
Delphi
1
2
3
4
5
6
7
8
9
try
  //Решение уравнения как кубического
except
  try
    //Решение уравнения как квадратного
  except
    //Решение уравнения как линейного
  end;
end;
При задании коэффициентов линейного уравнения (A = B = 0) срабатывает первый except, а вот вместо срабатывания второго результату присваивается значение NAN. Можно ли отключить присвоение этого значения опциями компиляции или нужно переделывать алгоритм?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2017, 04:27
Ответы с готовыми решениями:

NaN при обращении к функции
Здравствуйте! Имеется программа, считающая всякую ерунду по нажатию кнопки. Используемая функция...

NAN при выполнении SSE инструкций
Написал вставку на ассемблере для выполнения скалярного перемножения двух массивов на SSE asm...

Ошибка -nan(ind) и nan
Доброго времени суток форумчане! Решаю задачу, в которой необходимо найти площадь треугольника по...

Как вернуть NaN и Infinity, проверить на NaN и Infinity?
Как вернуть NaN и Infinity, проверить на NaN и Infinity?

5
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
22.09.2017, 08:41 2
ничего не понятно
в сто раз проще прикрепить пример
0
1 / 1 / 0
Регистрация: 15.06.2014
Сообщений: 96
25.09.2017, 06:46  [ТС] 3
Пример тут ничего не даст. Вопрос состоит в следующем:

В старых версиях Delphi при возникновении деления 0.0/0.0 возникало исключение EInvalidOp, а в версии 10.1 вместо этого результату присваивается NAN. Есть ли опция компилятора, с помощью которой можно вернуть старое поведение, т.е. возникновение EInvalidOp?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
25.09.2017, 07:16 4
http://docwiki.embarcadero.com... eptionMask
0
1 / 1 / 0
Регистрация: 15.06.2014
Сообщений: 96
02.11.2017, 06:46  [ТС] 5
В моем случае не сработало. Но там есть еще один метод -- SetExceptions. Так вот с ним парадоксальная ситуация.

Для проверки создаю новое приложение с единственной формой, в обработчике onCreate которой пишу

Delphi
1
2
3
4
procedure TForm1Create(Sender: TObject);
begin
  SetExceptions(GetExceptions() + [exInvalidOp, exZeroDivide]);
end;
В окне Watches смотрю значение GetExceptions.

Так вот, для приложения MDA все срабатывает нормально и данные ключи устанавливаются без проблем. А вот в случае приложения VCL вместо установленных ключей вижу строку "Floating point invalid operation at 0040730C".

Так происходит только у меня?
0
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,856
Записей в блоге: 5
02.11.2017, 12:57 6
SetExceptionMask, а не SetException
0
02.11.2017, 12:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2017, 12:57
Помогаю со студенческими работами здесь

Как реализована Double.NaN != Double.NaN
public static void main(String args) { Float f1 = new Float(Float.NaN); Float f2...

Как отключить брандмауэр или отключить фаервол
Я отключаю защитника Windows server 2012 . Отключаю фаервол. Расшариваю папки. В свойствах сети...

Безопасно ли слоту отключить отключить себя же?
connect(netRequester, &NetRequester::downloadCompleted, { // . . ....

nan
подскажите что это означает ввожу данные на выходе "nan" работаю только с double, long int


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru