【C语言】浮点数四舍五入

目录

一、浮点数实现四舍五入

二、补充:ceil,floor,强制类型转换,round,四舍五入法对比及其应用场景


一、浮点数实现四舍五入

以保留3位数为例

1.直接实现【不利用库函数】

int (x*1000+0.5)/1000.0;【特别注意,这里一定除以的是1000.0】

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16

 

2.间接实现【利用math函数库中的round】watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16

 

二、补充:ceil,floor,强制类型转换,round,四舍五入法对比及其应用场景

#include <stdio.h>
#include <math.h>
int main() 
{
    double x=3.863479, ret;
    //①ceil
    ret = ceil(x);
    printf("%lf\n", ret);
    //②floor
    ret = floor(x);
    printf("%lf\n", ret);
    //③强制类型转化——这里涉及了隐式转换
    ret = (int)x;
    printf("%.0lf\n", ret);
    //④round
    ret = round(x);
    printf("%lf\n", ret);
    //⑤四舍五入,比如说保留2位小数——两种实现方法
    //(1)round函数
    ret = round(x * 100) / 100.0;
    printf("%.2lf\n", ret);
    //(2)加减+强制类型转换
    ret =(int)(x*100+0.5) / 100.0;
    printf("%.2lf\n", ret);
    return 0;
}

让我们一起来看一下运行结果吧~

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16 

 很显然,可以的得出以下结论

重要结论1

操作效果
ceil函数求大于等于当前数值的最大整数(浮点表示形式)
floor函数求出不超过当前数值的最大整数(浮点表示形式)
round函数求出距离当前数值最近的整数
强制类型转换舍去精度【其实功能与floor相似,但有区别】
四舍五入浮点数四舍五入【与数学中的思路一样】

 

 

 

 

 

 

 

另外:这是cpluscplus对于ceil函数的解释,很容易看出,返回值和参数都是浮点型,但是它的功能为大于等于不超过当前数值的最大整数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16 同理,floor和round也是类似的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16 重要结论2

 floor函数和强制类型转换的区别——得到的结果为一个为整形,另外一个为浮点型

再叨叨几句:

1.ceil求不超过当前值的最大整数,返回值为浮点数

2.floor和强制类型int转换求不大于当前值得最大整数,返回值一个为浮点型一个为整型

3.round求距离当前值得最近的整数值

4.浮点数四舍五入有强制类型转换和round函数两种解法

 

 

 

 

 

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值