2014-09-16 8 views
0

В приведенном ниже примере вывод равен 3.1, поэтому он начинается с первого значения.В C++ он начинается с десятичного или целого # setprecision

double y = 3.14784; 
cout << setprecision(2) << y; 

в следующем примере выходная точность начинается с десятичным значением

int x = 2; 
double y = 3.0; 
cout << setprecision(2) << x/y; 

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

cout << setprecision(2) << x * y; // shows 6. 

если мы не используем фиксированный - только setprecision (n), где это n начинается? потому что он утверждает, что его заданная точность используется для десятичной точности. и все же в первом примере он рассматривает все двойное значение, а не только десятичное.

сообщите пожалуйста. спасибо.

ответ

0

п начинается с первых значимых цифр (ненулевых)

+0

, так что если после десятичного числа - 0.xxxx он начнется с первого значения после x? где, как если бы выход был 34.xxxx, он начинался с 3, а затем даже не доходил до десятичной, если setprecision (2)? – YelizavetaYR

+0

@YelizavetaYR попробуйте и посмотрите: http://ideone.com/JMONAk – clcto

+0

@clcto имеет смысл. Спасибо! – YelizavetaYR

1

От http://www.cplusplus.com/reference/ios/ios_base/precision/

Для локали по умолчанию:

  • Использование по умолчанию с плавающей точкой обозначения, точность поле указывает максимальное количество значимых цифр для отображения в общем подсчете как те, до и после десятичной точки. Обратите внимание, что это не минимально, и поэтому он не заполняет отображаемый номер конечными нулями, если число может отображаться с меньшим количеством цифр, чем точность.
  • В фиксированных и научных обозначениях поле точности задает точное количество цифр, отображаемых после десятичной точки, даже если это включает в себя конечные десятичные нули. Цифры до десятичной точки не имеют значения для точности в этом случае.
+0

Это где моя путаница лежит - по умолчанию она точно определяет макс # цифр (в том числе до десятичной). и тем не менее ваши второстепенные состояния в научной нотации указывают количество цифр после десятичной точки. как указать/различить стандартную и научную нотацию? – YelizavetaYR

+1

@YelizavetaYR так же, как вы использовали бы 'fixed'. 'std :: cout << std :: scientific'. http://www.cplusplus.com/reference/ios/scientific/ – clcto

+0

Право, что я понимаю - но скажем, что сравнение было/было между кодом, используя только setprecision (n) (без фиксированного, без научного и т. д.). – YelizavetaYR