C++四舍五入问题

floor

函数定义与语法

  函数名: floor  

       功 能: 返回小于或者等于指定表达式的最大整数  

      用 法: double floor(double x);  

     头文件:math.h

#include <stdio.h>  

#include <math.h>  

int main(void)  

{  

double number = 123.54;  

double down, up; 

 down = floor(number);  

up = ceil(number);  

printf("original number %10.2lf\n",number);  

printf("number rounded down %10.2lf\n",down);  

printf("number rounded up %10.2lf\n",up);  

return 0; 

 }  

运行结果:  

original number 123.54 

number rounded down 123.00  

number rounded up 124.00


程序例2:

void main()
{
    int i = 5;
    int s = i + 0.8 ;
    cout<<s<<endl;
}

输出结果为 s = 5 ;

即:高精度像低精度转换,小树部分会被截去。。整数只要加上小数,,小数无论是多大,,都会被舍去,,即使是0.9



/*编写一个函数double myround(double x),输入一个小数,将它四舍五入。

02*例如:myround(-3.51)的值是-4.0,myround(4.49)的值是4.0。可以调用math.h中的
03*库函数ceil和floor实现这个函数。*/
04#include <stdio.h>
05#include <math.h>
06double myround(doublex);
07int main()
08{
09    doublenum=1.00;
10    printf("please enter the value of num(double):");
11    scanf("%lf",&num);
12    //printf("%lf\n",num);
13    //printf("%lf\n",floor(num));
14    printf("你输入的值进行四舍五入后的结果为:%lf\n",myround(num));
15    return0;
16}
17double myround(doublex)
18{
19    //double add=0.5;
20    //int min,max;
21    intsa,si;//sa用于保存x的整数部分,si用于保存加0.5后的临时值。整数部分的四舍五入
22    if(x==0.0)
23    return0.0;
24    else
25        if(x>0.0)
26        {sa=(int)x;
27         si=x+0.5; 
28         if(sa==floor(si))//如果if语句成立说明x的小数比0.5小,应当舍去
29             returnsa;
30         else
31             return sa+1;
32         }
33         else  //负数部分的四舍五入
34         {sa=(int)x;
35          si=x-0.5;
36            if(sa==ceil(si))
37                returnsa;
38            else
39                returnsa-1;
40          }
41}
注意:
    double i = 5.6;
    int k  =(int)i;

    cout<<i<<endl;

结果:i = 5.6

即:(int)i----i的值不会变!!static_cast<int>(i);中,i的值也不会变!!!

double i = 5.6;
    int k  =static_cast<int>(i);
    cout<<i<<endl;



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值