Как мне представить неопределенные числа в C ++, используя большие значения?

В C ++ я хочу использовать пару больших значений для представления неопределенного числа:

void setUndefined(float& a) {
a = set_undefined_value;
}

bool isUndefined(float a) {
return a > is_undefined_value;
}

Я хочу использовать этот подход для всех числовых типов и из шаблонного кода, поэтому я размышлял по шаблону:

template<typename T>
class Undefined {
public:
static T set_undefined_value() {
NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
}
static T is_undefined_value() {
NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
}
};

// Template specialization for all numeric types: ...

Как найти хорошую пару значений для всех числовых типов?

Есть ли, например, каким образом я могу использовать шаблон std :: numeric_limits :: max ()?

Если я запишу неопределенные значения в файл, будут ли они переносимы между компьютерами и операционными системами?

0

Решение

Для чисел с плавающей запятой и двойников выберите битовый шаблон для каждого, который соответствует NaN в IEEE754. Затем вы можете создать макрос для тестирования nan на всех мыслимых компиляторах и со всеми возможными оптимизациями с плавающей запятой.

Для целых чисел со знаком используйте самое отрицательное значение (0x80 …)

Для целых чисел без знака используйте наиболее положительное значение (0xFF …)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]