cout.precision()该怎么用?

我编了一个这样的程序,可是结果只输出8,为什么呀?cout.precision()应该怎样用呢?
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a=25/3;
cout.precision(6);
cout <<a <<endl;
return 0;
}

这是C和C++语言的毛病。
double a;
a = 25/3;
尽管a是double,按理论 右式应当 向高级变量类型 转化后再运算,可是,C和C++把它处理成 整数除以整数,并按 整除处理。结果
25/3 等于整数 8。

为避免C和C++语言的这种毛病,书写表达式时,自己要注意类型转换,或书写常数时要注意加上小数点:
double a=25.0 / 3.0;
或 double a=25. / 3;

cout.precision(6); 输出小数点后5位,第6位四舍五入。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-20
这个cout.precision()函数的返回值就是设定前的有效位数,你的前面就是4,默认为6,这个位数大多数时候不会用得到,
因此一般而言最好是单独使用一个语句
你后面接着再加上一句:
std::cout
<<
std::cout.precision(5)<<
std::endl;
看看输出结果是什么
第2个回答  2017-09-07
cout.precision(6); 输出6位有效数字,第6位四舍五入得到(前提为原数据有足够的位数)
第3个回答  2008-11-07
给你一个例子 用6.0运行 参考下
//C++ precision() C++四舍五入 函数设置或返回当前要被显示的浮点变量的位数
//streamsize precision();
//streamsize precision( streamsize p );

#include<iostream.h>

void main()
{
float num = 314.15926535;
cout.precision(4);
cout << num<<endl;

cout.precision(5);
cout << num<<endl;

cout.precision(6);
cout << num<<endl;
}
第4个回答  2008-11-07
改下
double a=25.0/3;
如果像你那样写的话25/3是整数间的运算得8.
还有如果是小数点后8位的话要用
cout<<fixed<<a<<endl;
相似回答