Сокращение значащих цифр и исключение научных обозначений, когда число с плавающей запятой/двойное приближается к нулюC++

Программы на C++. Форум разработчиков
Anonymous
Сокращение значащих цифр и исключение научных обозначений, когда число с плавающей запятой/двойное приближается к нулю

Сообщение Anonymous »

Конечно, в распоряжении разработчика есть несколько способов уменьшить ошибку округления 1.78814e-07 при назначении переменной до 0,000000. В линейной алгебре систему уравнений невозможно решить, пока элементы матриц не будут приведены к истинным нулям. Как лучше всего обеспечить, чтобы ноль с ошибкой округления, представленный в научной форме, вместо этого представлялся истинным нулем?
У меня есть два решения, но какое из них лучше всего подходит? Во-первых, использование long double вместо float исключает ошибку округления. Во-вторых, включая метод как таковой

Код: Выделить всё

#include 
#include 

float returnZero(float inValue)
{
if(std::abs(inValue) < 0.000001)
return 0.000000;
else return inValue;
}
в результате получаются истинные нули.
Однако мне интересно узнать о передовом опыте. Меня не интересуют стандартный вывод или printf.

Вернуться в «C++»