Недействительные значения float и double
От: a9000  
Дата: 22.10.13 06:41
Оценка:
Подскажите как такое сделать:
Нужны некоторае константы типов float и double, которые бы выполняли функции "недействительного числа", по аналогии с NULL для недействительных указателей на объекты.
Такая константа могла бы храниться в переменных; с этим значением были бы допустимы сравнения (равно/неравно) и присваивания.
Но любые арифметические операции с использованием такого значения, а также любые встроенные функции типа sin(), cos() приводили бы к выбрасыванию исключения.

Что нибудь из "специальных" значений float подойдет? (SNAN, QNAN, бесконечности?)
Нашел такую штуку как _controlfp(_EM_INEXACT, _MCW_EM), после которой любая работа с "сигнальным" не-числами приводит к исключению. В частности, простая попытка присвоить не-число переменной вызывает исключение:
float n = std::numeric_limits<float>::signaling_NaN();

Но это мне не нужно! Нужно чтобы исключение вываливалось лишь при попытке арифметических операций с не-числами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.