您的位置:首页 > 其它

一场precision引发的血案

2010-01-02 21:14 399 查看
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时候 已经附带他了.

其他错误雷同此问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: