一場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時候 已經附帶他了.
其他錯誤雷同此問題.