Операция вставки для вставки значения с плавающей запятой в поток дает небольшой результат, потому что вставленное значение мало.Задача форматирования - показать значение, а не принимать решения о том, какие изменения вы хотите внести в него, например, изменить небольшое значение на ноль.
Если вы хотите, чтобы небольшие значения приводили к нулю,Вы можете:
- настроить значение перед вставкой в поток или
- запросить другое форматирование для значения.
Если вы хотите настроитьпреобразовав значения ниже некоторого порогового значения в ноль, вы можете использовать код, такой как:
if (abs(x) < 1e-100) x = 100;
Чтобы изменить форматирование, можно использовать формат fixed
, который можно задать с точностью, заданной с помощью * 1015.* from <iomanip>
:
std::cout << std::fixed << std::setprecision(8);
Последний может не предлагать гибкости, которую вы хотите, если вы хотите показывать небольшие числа с использованием научной записи (скажем, 10 -20 ), но не оченьмаленькие цифры (скажем, 10 -200 ).Нет вариантов форматирования, позволяющих использовать научную нотацию, кроме как отрубать небольшие числа ниже произвольного порога.Для этого вы должны использовать первый вариант изменения значения самостоятельно.