突然发现了一个问题。
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
double b=3.5;
cout<<b/b<<endl;
printf("%lf",b/b);
return 0;
}
//Outout:
1
1.000000
- 根据资料了解到cout在输出的过程中,如果输出的部分小数末尾是0,那么它会把这些0都省略,如果不要它省略这些0,可以像下面这样。
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
double b=3.5;
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<b/b<<endl;
return 0;
}
- 加一句cout.setf(ios_base::fixed,ios_base::floatfield),逗号前面表示的是设置cout为定点输出格式,后面表示设置cout为浮点输出格式,这样可以起到输出时原本应该在double类型后面的六位小数保存了下来的作用。
本篇文章纯属讨论发现的一些问题,如果要方便应用,直接应用如下面通常的形式即可。
//用printf来控制输出格式:
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
double b=3.5;
printf("%.6lf",b); //直接保留两位小数。
cout<<set
return 0;
}
//用cout来控制保留小数位数:
#include <iostream>
#include <iomanip>//头文件
using namespace std;
int main(){
double b=3.5;
cout<<setprecision(6)<<fixed<<b<<endl;//fixed用来控制显示0
//setprecision用来控制小数位数。
return 0;
}