2015-10-08 5 views
1

Я хочу глобально установить точность вывода до 2 знаков после запятой.Как установить точность вывода в 2 десятичных знака в C++?

Я уже пытался использовать iomanip и setprecision, однако я продолжаю получать выходные данные с помощью 'e'.

Это мой пример кода:

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 
    double pay=16.78; 
    double hours; 
    double total; 

    cout.precision(2); 

    cout << "Please enter how many hours you worked : " << endl; 
    cin >> hours; 

    total=hours*pay; 

    cout << "You earned: " << total << endl; 
} 
+1

Здравствуйте, и добро пожаловать в переполнение стека. Вы можете получить более быстрые ответы быстрее, если вы разместите минимальный пример, демонстрирующий поведение, которое вы хотите продемонстрировать, а не весь ваш код. – Amadan

+0

Как написать [mcve]. –

+0

Возможный дубликат [Как использовать setprecision в C++] (http://stackoverflow.com/questions/22515592/how-to-use-setprecision-in-c) – Amadan

ответ

0

Если е имеет положительное значение, вы не можете ездить на них, потому что ваше значение слишком велико. Этот код

std::cout << std::setprecision(3) << 3e45; 

//output 
3e+45 

Если это отрицательное число, вашей точности недостаточно. Как следующего код

std::cout << std::setprecision(3) << 3e-45; // 

//output 
3e-45 

Простой способ будет использовать станд :: фиксированной

std::cout << std::fixed << std::setprecision(3) << 3.63e-2; 

//output 
0.036 

Но disavantage вас с стандом :: фиксируется он показывает ноль после последней неэквидистантной нулевое число до тех пор, пока оно не достигнет установленного вами значения setprecision qunatity.

0

Я не знаком с «cout.precision (2)». Я бы использовал std :: setprecision (4), если бы я хотел, чтобы у моего вывода было 4 значительных цифры.

0

Вы можете использовать что-то вроде этого:

double pay = 393.2993; 
std::cout << std::fixed << std::setprecision(2) << pay; 

Вам нужно будет включать iomanip для этой работы.

#include <iomanip>