A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ySssssssss 中级黑马   /  2016-3-28 22:04  /  1546 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


#include <stdio.h>
int main(){

    //声明变量保存用户输入的实数
    float num = 0.0f;
    printf("请输入一个小数: \n");
    scanf("%f",&num);
    int num2 = num;
    float num3 = num - num2;
    int res = num3 >= 0.5;
    //判断是否符合四舍五入规则
    //%.2f-整数部分大于0.5则整数部分+1
    if(res)
    {
        int num4 = num2 + 1;
        printf("四舍五入后的结果为:%d\n",num4);
    }
    if(res == 0)
    {
        printf("四舍五入后的结果为:%d\n",num2);
    }
   
    return 0;
}


请问算法还能简便一些吗?

7 个回复

倒序浏览
我也是这样想的,判断一个float类型的数减去一个整型的数,结果和0.5比较
回复 使用道具 举报
这个就挺好       想简单可以使用强行转化              
回复 使用道具 举报
不是直接:
printf("四舍五入后的结果为:%.0f\n",num);
就实现四舍五入吗。
回复 使用道具 举报
缘之有缘 发表于 2016-3-30 19:28
不是直接:
printf("四舍五入后的结果为:%.0f\n",num);
就实现四舍五入吗。

如果小数点后面只有.5 的话  不会进位的  
回复 使用道具 举报
定义一个int型变量来接收[(需要四舍五入的数字)+0.5]
int  jieGuo = num + 0.5;
就OK了
回复 使用道具 举报 1 0
其实有更简单的算法:
  1. int mian(){
  2.     float num = 0.0f;
  3.     scant("%f",&num);
  4.     int  zhengShu = num + 0.5;
  5.     printf("%f四舍五入后为 %d",num,zhengShu);
  6.      return 0;
  7. }
复制代码
回复 使用道具 举报
学习了      
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马