【C语言】浮点数四舍五入
目录
以保留3位数为例
1.直接实现【不利用库函数】
int (x*1000+0.5)/1000.0;【特别注意,这里一定除以的是1000.0】
2.间接实现【利用math函数库中的round】
#include <stdio.h> #include <math.h> int main() { double x=3.863479, ret; //①ceil ret = ceil(x); printf("%lf ", ret); //②floor ret = floor(x); printf("%lf ", ret); //③强制类型转化——这里涉及了隐式转换 ret = (int)x; printf("%.0lf ", ret); //④round ret = round(x); printf("%lf ", ret); //⑤四舍五入,比如说保留2位小数——两种实现方法 //(1)round函数 ret = round(x * 100) / 100.0; printf("%.2lf ", ret); //(2)加减+强制类型转换 ret =(int)(x*100+0.5) / 100.0; printf("%.2lf ", ret); return 0; }
让我们一起来看一下运行结果吧~
很显然,可以的得出以下结论
重要结论1
另外:这是cpluscplus对于ceil函数的解释,很容易看出,返回值和参数都是浮点型,但是它的功能为大于等于不超过当前数值的最大整数
同理,floor和round也是类似的
重要结论2
floor函数和强制类型转换的区别——得到的结果为一个为整形,另外一个为浮点型
再叨叨几句:
1.ceil求不超过当前值的最大整数,返回值为浮点数
2.floor和强制类型int转换求不大于当前值得最大整数,返回值一个为浮点型一个为整型
3.round求距离当前值得最近的整数值
4.浮点数四舍五入有强制类型转换和round函数两种解法