Конечно, в распоряжении разработчика есть несколько способов уменьшить ошибку округления 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.