我编了一个这样的程序,可是结果只输出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位四舍五入。
这个cout.precision()函数的返回值就是设定前的有效位数,你的前面就是4,默认为6,这个位数大多数时候不会用得到,因此一般而言最好是单独使用一个语句你后面接着再加上一句:std::cout<<std::cout.precision(5)<<std::endl;看看输出结果是什么
给你一个例子 用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;}