直接看代码:
需要注意:下面的ios::fixed需要头文件iomanip,否则报错!
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
double d = 1.65469;
int n = 4;
cout << setiosflags(ios::fixed) << setprecision(n) <<d;//输出1.6547
return 0;
}
上面的是不是特简单,不需要那些骚操作,比如精确到小数点后2位:
double x = 1.65469;
cout << (int)(x*100+0.5)/100.0;//输出1.65
就像这样的骚操作就不要了,尽管你很秀。
还有一点要提醒
C语言的输出和C++的输出是不一样的:
#include <iostream>
#include<stdio.h>
using namespace std;
int main()
{
double x = 3.54;
cout << x << endl; //输出3.54
printf("%f",x); //输出3.540000
return 0;
}
double d = 1/3.0;
cout<<d;//输出0.333333
double d = 8/3.0;
cout<<d;//输出2.66667
double d = 80/3.0;
cout<<d;//输出26.6667
double d = 8000/3.0;
cout<<d;//输出2666.67
printf默认输出6位小数,cout自动不输出后面多余的0,默认输出6位有效数字。
如果要改变有效数字的位数:
double d = 80/3.0;
cout<< setprecision(4) <<d;//输出26.67
但是需要注意
double d = 6.50004;
cout<< setprecision(4) <<d;//输出6.5
如果是这样的话:
double d = 6.504;
cout<< setprecision(4) <<d;//输出6.504
看到这里是不是有一点点迷。
看下面的总结就清楚了
setprecision(n) 以十进制小数形式输出时,n代表有效数字,以fixed(固定小数位数)和scientific(指数)形式输出时n为小数位数。
再回头看上面的就清楚了。
cout对象还有很多的成员函数,需要去书上查,这里就不再赘述了。
本文地址:https://blog.csdn.net/weixin_44813711/article/details/107168784
如对本文有疑问, 点击进行留言回复!!
IOS系统中使用new Date()报错valid Date
解决Android10读取不到/sdcard/、/storage/emulated/0/文件的问题
Codeforces Round #649 (Div. 2)-B. Most socially-distanced subsequence(思维)
网友评论