1. 程式人生 > >一場precision引發的血案

一場precision引發的血案

Accelerated C++ 中文版中 第三章 3.1那個示例程式碼

#include <iomanip>
#include <ios>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::precision;
 

int main()
{
    cout<< "please enter your first name: ";
    string name;
    cin>>name;
    cout<<"Hello, "<<name<<"!"<<endl;

    cout<< "please enter your midterm and final exam grades: ";
    double midterm, final;
    cin>>midterm>>final;

    cout<<"Enter all your homework grades, "
        "followed by end of file: ";

    int count = 0;
    double sum = 0;
    double x;

    while (cin>>x)
    {
        ++count;
        sum += x;
    }
    streamsize prec = cout.precision();
    cout<<"your final grade is "<<setprecision(3)<<0.2*midterm+0.4*final+0.4*sum/count<<setprecision(prec)<<endl;
    return 0;
}

編譯後報錯

百度後發現 原來是原書中的錯誤 中文版未糾正.

把using std::precision這句註釋 可以修正其中一個錯誤,但是還是不解,為啥去掉才行呢?這句幹嘛呢?

又百度之,發現是設定浮點數精度的....但是 因為precision是COUT的一個方法吧,所以 當你using cout時候 已經附帶他了.

其他錯誤雷同此問題.