黑马程序员技术交流社区

标题: 关于四舍五入的算法 [打印本页]

作者: ySssssssss    时间: 2016-3-28 22:04
标题: 关于四舍五入的算法

#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;
}


请问算法还能简便一些吗?
作者: 毛小猪    时间: 2016-3-29 22:04
我也是这样想的,判断一个float类型的数减去一个整型的数,结果和0.5比较
作者: 最爱舒儿    时间: 2016-3-30 01:17
这个就挺好       想简单可以使用强行转化              
作者: 缘之有缘    时间: 2016-3-30 19:28
不是直接:
printf("四舍五入后的结果为:%.0f\n",num);
就实现四舍五入吗。
作者: qq6937523    时间: 2016-4-1 09:28
缘之有缘 发表于 2016-3-30 19:28
不是直接:
printf("四舍五入后的结果为:%.0f\n",num);
就实现四舍五入吗。

如果小数点后面只有.5 的话  不会进位的  

作者: x_starry    时间: 2016-4-1 19:31
定义一个int型变量来接收[(需要四舍五入的数字)+0.5]
int  jieGuo = num + 0.5;
就OK了
作者: 张立鹏    时间: 2016-4-1 21:43
其实有更简单的算法:
  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. }
复制代码

作者: 缘之有缘    时间: 2016-4-1 22:38
学习了      




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2