Простой c ++ cout statment, одна строка с проблемой форматирования, что это? - PullRequest
0 голосов
/ 16 марта 2011

Вот мой код:

#include <iomanip>
#include <fstream>
#include <iostream>
using namespace std;

int main ()  
{
    ifstream fin;

    fin.open("Celsius.txt");

    if (!fin.good()) throw "I/O error";

    double myC;
    fin >> myC;

    fin.close();   

    ofstream fout;
    fout.open("Fahrenheit.txt");
    if (!fout.good()) throw "I/O error";

    double myAnswer = (myC * 1.80) + 32;  
    fixed;  
    cout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl;  
    fout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl;  

    fout.close(); 
}

Хорошо, я просто пропустил какой-то полный фундаментальный нейрон, мне кажется, что какой-то дорожный блок понимает это.

  • Это -2для отформатированного входного эха и
  • Это -2 для отсутствия форматирования вывода с одной десятичной цифрой.
  • Не форматировать входные значения только для вывода.

    fixed;
    cout << myInput << " should not be formatted, but " << setprecision(3) << myOutput << " should be" << endl;
    

Разве это не остается:

myInput не отформатированвходное эхо и myOutput отформатированы до одной десятичной цифры?

1 Ответ

1 голос
/ 16 марта 2011

Вы должны включить фиксированный поток вывода, например так:

cout << myC << " Celsius equals " << fixed << setprecision(3) << myAnswer << " Fahrenheit" << endl;

setprecision будет указывать количество знаков после запятой после запятой. Таким образом, 3 даст число, например, 72.000, или 1 в вашем случае установит его на 72.0

.
...