Я хочу защитить мою переменную от хранения значений переполнения.
Я рассчитываю потери на каждом уровне дерева и на некоторых этапах.
Я хочу сделать следующее в моем коде c ++.
Например:
long double loss; //8 Bytes Floating Number
loss=calculate_loss();
if(loss value is greater than Capacity)
do
store 8 bytes in loss abd neglect remaining;
end if
если ваша емкость должна быть ограничена максимальной или минимальной емкостью типа данных double (или float), вы можете использовать исключения с плавающей запятой (не путать с исключениями C ++). Их сигнализация должна быть включена в опциях компилятора, и вы можете сопоставить их с исключениями C ++, обнаружив переполнение типа данных.
Вот страница MSDN, которая довольно хорошо описывает исключения FP. Внизу страницы вы найдете примеры того, как сопоставить это с исключениями C ++.
http://msdn.microsoft.com/en-us/library/aa289157%28v=vs.71%29.aspx
Eсть limits.h
в C ++, но это
if(loss value is greater than Capacity)
не может работать по определению. Значение в loss
Можно не должен быть больше, чем его собственный максимум типа данных.
Ваше примерное значение 5 × 10 ^ 302 действительно подозрительно велико. В сочетании с вашим утверждением, что вы иногда получаете неожиданные отрицательные значения, я советую вам внимательно взглянуть на свои расчеты.
Разумное предположение: вы возитесь с указателями и смешиваете указатели на целые числа и числа с плавающей запятой. Но никто не может сказать, не видя код.