В приведенном ниже примере вывод равен 3,1, поэтому он начинается с первого значения.
double y = 3.14784;
cout << setprecision(2) << y;
в следующем примере точность вывода начинается с десятичного значения
int x = 2;
double y = 3.0;
cout << setprecision(2) << x/y;
и все же в следующей строке кода — те же самые x и y, как объявлено выше, мы получаем точность, начиная с совсем не показанной. (единственный способ напечатать ниже 6.00 — использовать фиксированный).
cout << setprecision(2) << x * y; // shows 6.
если мы не используем фиксированный — просто setprecision (n), где начинается этот n? потому что это заявляет, что его установленная точность используется для десятичной точности. и все же в первом примере он рассматривает все двойное значение, а не только десятичное.
пожалуйста, порекомендуйте.
Благодарю.
n начинается с первых значащих цифр (не ноль)
От http://www.cplusplus.com/reference/ios/ios_base/precision/
Для локали по умолчанию:
- Используя стандартную нотацию с плавающей точкой, в поле точности указывается максимальное количество значащих цифр, которые будут отображаться при общем подсчете как до, так и после десятичной запятой. Обратите внимание, что это не минимум, и поэтому он не дополняет отображаемое число конечными нулями, если число может отображаться с меньшим количеством цифр, чем точность.
- И в фиксированной, и в научной нотациях поле точности указывает, сколько именно цифр нужно отображать после десятичной точки, даже если это включает в себя конечные десятичные нули. В этом случае цифры перед десятичной запятой не имеют значения для точности.