Сокращение значащих цифр и исключение научных обозначений, когда число с плавающей запятой/двойное приближается к нулю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.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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