Функция std :: setprecision дает неверный результат

У меня есть следующая строка для отображения float числа только с 3 десятичными цифрами:

myfile << dSet[i].probability[j] << setprecision(3);

Он проходит через 150 строк данных и печатает их все нормально (3 цифры, как и ожидалось), за исключением некоторых данных (особенно самых первых данных):

десятичная точка

Это нормально для ...e... числа, но для других я хотел бы, чтобы он отображал только 3 цифры после десятичной точки.

-1

Решение

Здесь есть две проблемы, во-первых, вы не звоните
setprecision до тех пор после выведя первое значение, так
он получает вывод с точностью по умолчанию, 6.

Во-вторых, все остальные результаты, которые вы выделяете является вывод с
точность 3: во всех случаях есть три значимых
цифры. Проблема в том, что «точность» имеет разные значения
в соответствии с форматом вывода.

Исходя из вашего вывода, я предполагаю, что вы используете формат вывода по умолчанию, где точность означает
именно так: количество значащих цифр (и выбор того, использовать ли научный формат или фиксированный, зависит от значения). С фиксированным или научным форматом точность означает
количество цифр после десятичной дроби, например, с использованием фиксированного формата, ваша вторая выделенная запись будет 0.008 (звучит как то, что вы хотите), и все значения в научном формате, которые у вас есть, будут 0.000,

Если вы хотите, чтобы меньшие значения отображались в научном формате, вы можете сделать
Проверьте себя, установив фиксированный или научный в соответствии с вашими критериями. (Критериями для формата по умолчанию является то, что показатель степени будет меньше, чем -precision.)

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector