1、如何保留n位有效数字?(自带四舍五入)
setprecision(n)
功能:控制浮点数显示的有效数字个数。
图中可以看出,只用setprecision(n)是控制保留几位有效数字的。
由8-9两行代码可以看出,也是只写一次就可以。
8-10行可以看出,只是四舍五入修改了数字的显示方法,并不是修改原数字。从常识我们可以知道,如果12.345数字本身改变,那就是两位有效数字变为 12,那从两位有效数字改为四位有效数字会变为 12.00,而不是12.34。
11-12行可以看出如果要保留的太多,是不会补上0的(往下看有补0的方法)。
13行中可以看出,如果小数点前的位数多于你要保留位数,则会使用科学计数法。
然后你会发现,如果你要保留的位数多于数字原来的小数,就会补上0。
2、如何保留n位小数/保留小数点后n位?(自带四舍五入)
#include <iomanip> //不要忘了头文件
//第一种写法
cout<<setiosflags(ios::fixed)<<setprecision(n)<<x;
//第二种写法
cout.setf(ios::fixed);
cout<<setprecision(n)<<x;
//第三种写法
cout<<fixed<<setprecision(n)<<x;
注意:setprecision单独使用是控制有效位数的,与fixed合用才是控制小数点后位数的
float a=12.123456;
cout<<setprecision(3)<<a; //输出12.1
cout<<fixed<<setprecision(3)<<a;//输出12.123
fixed是设置补0,以下三种写法任选其一即可
cout<<setiosflags(ios::fixed);
cout.setf(ios::fixed);
cout<fixed;
如果不想补0,可以设置关闭fixed
cout.unsetf(ios::fixed);
3、浮点数如何保留小数点后n位?
C语言精度控制so easy
float a=123.45;
double b=22.3736723;
printf("%.5f %.2f %.12f",12.3,a,b);//输出:12.30000 123.45 22.373627230000
%f 格式化输出浮点型数据,在%之后加上“.n”即可。
#include <stdio.h>
int main()
{
float PI=3.1415926;
float R=5.3;printf("PI=%.2f\n", PI); //输出:PI=3.14
printf("面积 = %.2f\n", PI * R * R); //输出:面积 = 88.25
printf("面积 = %f\n", PI * R * R); //输出:面积 = 88.247337
printf("面积 = %.8f\n", PI * R * R); //输出:面积 = 88.24733734
return 0;
}//不设定保留几位小数,则默认六位
4、向上、向下取整
#include <cmath>//不要忘了头文件
ceil(x) 向上取整、floor(x)向下取整,比如
ceil(3.14)、ceil(3.55)都等于4
floor(3.14)、floor(3.55)都等于3
5、如何不使用科学计数法
十进制数输出
用C++编程的时候,如果输出的数字太大,系统默认按科学计数法输出结果,这样的显示不是很直观,所以我们要改成平常用的十进制。
只需要在输出结果前面加上:
cout.setf(ios_base::fixed,ios_base::floatfield);
或者
cout.setf(ios::fixed,ios::floatfield);
如果上面的不行就改成下面的,按道理应该是下面的那一句通用一点。
注意:虽然上面都说要包含头文件,但是c++有万用头文件
#include<bits/stdc++.h>//万能头文件