C语言day02-浮点类型

一、浮点类型

类型 字长 值范围 有效位
float 32 -3.4E+38 ~ -1.2E-38;1.2E-38 ~3.4E+38;0;±inf;nan 6
double 64 -1.7E+308 ~ -2.3E-308;2.3E-308~1.7E+308;0;±inf;nan 15

1.1 输入输出

类型 scanf printf
float %f %f,%e
double %lf %f,%e

实例1:

int main(int argc, char const *argv[])
{
    double ff = 1234.456789;
    printf("e-ff:%e\n", ff);
    printf("E-ff:%E\n", ff);
    printf("f-ff:%f\n", ff);
    return 0;
}

输出:

e-ff:1.234457e+003
E-ff:1.234457E+003
f-ff:1234.456789

1.2 输出精度

%f之间加上.n可以指定小数点后几位,这样的输出是做四舍五入的

  • printf("%.3f\n",-0.0049);
  • printf("%.30f\n",-0.0049);
  • printf("%.3f\n",-0.00049);

实例2:

int main(int argc, char const *argv[])
{
    printf("%.3f\n",-0.0049);
    printf("%.30f\n",-0.0049);
    printf("%.3f\n",-0.00049);
    return 0;
}

结果:

-0.005
-0.004899999999999999800000000000
-0.000

二、范围与精度

2.1 范围

  • inf:±∞
  • nan:不存在的浮点数

实例3:

int main(int argc, char const *argv[])
{
    printf("%f\n", 12.0/0.0);
    return 0;
}

打印:

1.#INF00

2.2 精度

实例4:

int main(int argc, char const *argv[])
{
    float a, b, c;
    a = 1.345f;
    b = 1.123f;
    c = a + b;
    if (c == 2.468)
    {
        printf("相等\n");
    }else{
        printf("不相等!c = %.10f,或者%f", c, c);
    }
    
    return 0;
}

输出:

不相等!c = 2.4679999352,或者2.468000

三、内部表达

以编码的形式
image

  • 浮点数在计算时是由专用的硬件部件实现的
  • 计算double和float所用的部件是一样的
posted @ 2022-08-08 16:43  DingJie1024  阅读(108)  评论(0编辑  收藏  举报