一、如果是不保留小数的四舍五入(也就是只留下整数部分)
用floor函数
头文件
floor(x),也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个值)。
虽然函数不是准确的四舍五入,但是我们加上一点改动就能让其变成真正的四舍五入
具体用法如下
有一个浮点数x,想要获得它四舍五入后的结果,写法:x=floor(x+0.5)
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float x;
cin>>x;
x=floor(x+0.5);
cout<<x<<endl;
return 0;
}
为什么,你可以根据floor函数的定义仔细想一下。
二、保留小数点后n(n>=1)位四舍五入
举个例子,一个小数点后两位的浮点数四舍五入保留一位小数
可以用多种方法实现
方法一:依然利用floor函数
思路就是先把要转化的数乘到要进行四舍五入的那位小数前,然后利用floor四舍五入,再除回去。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float x;
cin>>x;
x=x*10;
x=floor(x+0.5);
x/=10;
printf("%.1f",x);
return 0;
}
方法二:利用强制转换
思路其实和floor差不多的,先把要转化的数乘到要进行四舍五入的那位小数前,然后加上0.5,强制转换成int后再除回去。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float x;
cin>>x;
x=x*10+0.5;
x=(int)x;
x=x/10;
printf("%.1f",x);
return 0;
}
方法三:round函数
和floor也差不多的
Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50%。这样就会造成在应用程序中计算有误。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
float x;
cin>>x;
x=x*10;
x=round(x);
x=x/10;
printf("%.1f",x);
return 0;
}
可能还有其他方法,欢迎补充