码迷,mamicode.com
首页 > 其他好文 > 详细

浮动数与0比较

时间:2014-06-30 15:34:22      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   http   2014   os   io   测试   

无限大小

  C语言如何表示无限大小,NANredis里面这么搞的:

static double R_Zero, R_PosInf, R_NegInf, R_Nan;    

/* Double constants initialization */    

R_Zero = 0.0;    

R_PosInf = 1.0/R_Zero;    

R_NegInf = -1.0/R_Zero;    

R_Nan = R_Zero/R_Zero;    

 

  简单测试:

#include <stdio.h>    

 

int main()    

{    

    static double R_Zero, R_PosInf, R_NegInf, R_Nan;    

    /* Double constants initialization */    

    R_Zero = 0.0;    

    R_PosInf = 1.0/R_Zero;    

    R_NegInf = -1.0/R_Zero;    

    R_Nan = R_Zero/R_Zero;   

 

    printf("R_Zero  : %lf\n"

           "R_PosInf: %lf\n"

           "R_NegInf: %lf\n"

           "R_Nan   : %lf\n",

           R_Zero, R_PosInf, R_NegInf, R_Nan);

 

    return 0;

}

 

  结果如下:

[heidong@HEIDONGVM tmp]$ ./z 

R_Zero  : 0.000000

R_PosInf: inf

R_NegInf: -inf

R_Nan   : -nan

 

  果然神奇。

浮动数与0比较

  大学时候,老师教导我们,浮动数不要与0比较,因为浮点数在计算机里面表示的是近似值。所以如果浮动数要与0做比较就用·< 0.000001·这种龌蹉的方式,明明是0,却要搞个神马0.000001出来。现在我们可以这么来稿了:

#include <stdio.h>    

 

int main()    

{    

    static double R_Zero, R_PosInf, R_NegInf, R_Nan;    

    /* Double constants initialization */    

    R_Zero = 0.0;    

    R_PosInf = 1.0/R_Zero;    

    R_NegInf = -1.0/R_Zero;    

    R_Nan = R_Zero/R_Zero;   

 

    printf("R_Zero  : %lf\n"

           "R_PosInf: %lf\n"

           "R_NegInf: %lf\n"

           "R_Nan   : %lf\n",

           R_Zero, R_PosInf, R_NegInf, R_Nan);

 

    double a = 1.0;

    double b = 1.0;

 

    if(a-b == R_NegInf) {

            printf("%lf - %lf != 0\n", a, b);

    }else{

            printf("%lf - %lf == 0\n", a, b);

    }

    return 0;

}

 

  结果如下:

[heidong@HEIDONGVM tmp]$ ./z 

R_Zero  : 0.000000

R_PosInf: inf

R_NegInf: -inf

R_Nan   : -nan

1.000000 - 1.000000 == 0

 

以后就可以用R_NegInf这种方式和0比较了。

 

POST A:T http://luoguochun.cn/2014/06/28/infinite/

浮动数与0比较,布布扣,bubuko.com

浮动数与0比较

标签:style   http   2014   os   io   测试   

原文地址:http://www.cnblogs.com/imlgc/p/3816233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!