C++ 为什么setprecision会出错?什么是设定精度

C++ 为什么setprecision会出错?什么是设定精度,c++,dev-c++,C++,Dev C++,我的老师给了我这个,我在添加时出错了 «setprecision(3) <<setiosflags(ios::fixed) » «设定精度(3)y1; cout>y2; cout>y3; cout>y4; coutsestprecision是一个操纵器,您可以将其传递到cout流中,以定义逗号后应显示的位数,例如: cout << setprecision(2) << 0.122312 << endl; 它会导致错误,因为你们并没有把它

我的老师给了我这个,我在添加时出错了

«setprecision(3) <<setiosflags(ios::fixed) »
«设定精度(3)y1;
cout>y2;
cout>y3;
cout>y4;

cout
sestprecision
是一个操纵器,您可以将其传递到
cout
流中,以定义逗号后应显示的位数,例如:

    cout << setprecision(2) << 0.122312 << endl;

它会导致错误,因为你们并没有把它放到流中,但并没有任何地方——它不是一个语句

因为您误解了说明。您不能在程序结束时将其转储到自己的代码行中,并期望它神奇地工作,也不能在其上保留法语引号

您需要从逻辑上思考您的程序的功能以及顺序。你想完成什么?你如何告诉计算机如何帮助你完成它

一个好的开始是通过谷歌搜索
setprecision
,了解它是什么以及如何使用它


此外,您的程序还有其他问题,例如缺少
main

的返回类型。该行的问题是它不是有效的cpp语句

setprecision语句需要连接到输出流,因为您使用的是标准输出。修正将是这样的

cout << setprecision(2) << fixed << endl;

那么setiosflags(ios::fixed)的含义是什么?在此之前谢谢,它允许你添加一些格式标志(比如大写)--我很确定你会发现老师给你的更有趣的信息,用引号括住代码。您不熟悉引号吗?IIRC如果返回类型为
int
,则可以忽略它。与
int
参数类型相同。所以
foo(a,b){returna+b;}
是有效的。编辑:
int
从函数中省略似乎很好,但省略参数类型并不是合乎礼仪的。@erip:不,不能。C++不是C.@ Erip:它在GCC中接受的是旧的、非严格的模式,并不意味着它是一个有效的C++程序(它不是)。打开编译器警告。默认情况下,GCC在编译C++代码时有很多可以保存的C特性。试图查找标准报价,但无法快速扫描。我找到的最接近的是[basic.start.main]2:[main]应该有一个返回类型
int
@erip:实际上,除了整个语法和规则都说函数有一个返回类型并定义它在函数声明中的位置之外,没有什么可以引用的标准。根本没有规则说你可以忽略它。但是,非规范兼容性部分<代码> [C++14:C.1.6] < /Cuff>描述了在C++中,它是如何有效的,不再是C++,在“禁止隐式int”的章节下。(我没有C++98的节号,但它也会在那里,表明这几乎不是最近的变化!)
    0.12
cout << setprecision(2) << fixed << endl;
int main() 
{
  //code;
}