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 @   DingJie1024  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示