一场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时候 已经附带他了.
其他错误雷同此问题.
#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时候 已经附带他了.
其他错误雷同此问题.
相关文章推荐
- Android 4.0 中由ProGuard引发的一场血案
- 由JS函数返回值引发的一场”血案"
- 由Cstring转LPWSTR而引发的一场血案
- Android 4.0 中由ProGuard引发的一场血案
- 浅谈虚拟机(1)继承引发了一场血案の实例化中的继承
- SwipeRefreshLayout 引发的一场血案
- 由Unity5.3.3f1引发的一场血案
- 一场.user.ini引发的血案
- 由某云盘下载速度慢而引发的一场血案!!!
- C之有趣-strlen()函数引发的一场“血案”
- 一场Socket四次握手引发的血案
- Gitlab:一场“删库”血案引发的反思
- 一场无路由协议引发的血案
- 一场由股票提醒助手插件引发的血案——浅入浅出 jquery autocomplete
- 【运维囧事】NTP服务器引发的一场血案
- PHP队列--选举引发的一场血案
- JavaEE项目bug修复记——一场由特殊空字符(160号ASCII码)引发的血案
- 一场版本升级引发的性能血案的追凶过程
- WSAPoll引发的一场血案(2)
- Android 4.0 中由ProGuard引发的一场血案