题解 | #实现四舍五入#

实现四舍五入

https://www.nowcoder.com/practice/020a0cf673174d5795d97ae79cff59a0

#include <stdio.h>

int main()
{
    int a;
    float b;
    scanf("%f",&b);
    /*  简单理解思路:  */ 
    /*
        浮点数转换成整形,向左取整(也就是去掉小数部分,保留整数)
        四舍五入:这个题有点坑,还要比较负数
        如果是整数肯定是小数部分大于0.5的取整,小于0.5的舍弃,利用转换特性可实现
        即:加0.5即可,如:11.2 加0.5后变为11.7转换后还是11;
                           9.8 加0.5后变为10.3转换后为10;
                          一种极限特例:20.5加0.5后变为21.0转换后为21;

                 如果是负数再加0.5则会:
                      假设是-11.2  加0.5后变为-10.7四舍五入后为-10没问题,但如果是-11.7着变成 -11.2四舍五入后变成-11,按理说-11.7应该变成-12(带负号后数字越大,数值越小)
                 故如果是负数:则减0.5
    */
  
  /* 直接比较 */
    // if(b > 0)  
    //  a = (b+0.5);
    //  else 
    //   a = (b - 0.5);
  
  
  /* 三目运算实现 */
    if(b > 0)
    {
        a = (b+0.5);
        a = a>b?a:b;
    }
    else 
    {
         a = (b - 0.5);
         a = a<b?a:b;
    }

    printf("%d\r\n",a);
    return 0;
}

#C语言基础练习#
C语言之旅 文章被收录于专栏

时光不负,未来可期。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务