一场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时候 已经附带他了.

其他错误雷同此问题.

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值