• 概念:用来表达小数的数据类型
  • 全称:floating point
  • 语法:
    • 单精度浮点型(float),典型尺寸是4字节
    • 双精度浮点型(double),典型尺寸是8字节
    • 长双精度浮点型(long double),典型尺寸是16字节
      float  f1      // 单精度
      double f2      // 双精度
      long double f3 // 长双精度   
      注意:开发中不建议频繁使用。(比如0.4不好用二进制表示)
  • %f            // 单精度浮点型
    %lf           // 双精度浮点型
    %Lf           // 长双精度浮点型
    % 6.1f         // 右对齐并占用宽度为6,保留一位的小数的浮点数
    %-6.1f        // 坐对齐并占用宽度为6,保留一位的小数的浮点数
    
    
    %e,%E    // 转换浮点数为十进制指数记法。                              
             // 比较少用   如:1234 == 1.234*10的3次方
    %a,%A    // 转换浮点数为十六进制记法。                                
             // 基本不用
    %g,%G    // 转换浮点数为十进制小数或十进制指数记法,依赖于值和精度。   
             // 基本不用

    (2)、精度说明,在内存中的存放:

  • 公式:

  • 说明:
  • s表示符号位,当例子S=0,值为正数;当S=1,值为负数。

    M表示有效数字,大于等于1,小于2。

    E表示指数位。

  • 注意:

  1. 请填写float与“零值”比较的 if  语句。

    提示:这里“零值”可以是 0,  0.0  。例如

      int变量n与“零值”比较的 if语句为: 

        if ( n == 0 )

        if ( n != 0 )

        以此类推。 

  • 请写出 float  x  与“零值”比较的 if  语句:不可将浮点型变量用"="或"!="与数字比较,应该设法转换为"<="或">=来比较
  • #include<stdio.h>
    int main(int argc, char const *argv[])
    {
        //if ( float x == 0.0)
        //if ( float x != 0.0)
    
        float tmp = 0.000001;
    
        float f = 0;
    
        if(( f >= - tmp ) &&  ( f <= tmp ) )
        {//不可将浮点型变量用"="或"!="与数字比较,应该设法转换为"<="或">=来比较
            printf("f is zero\n");
        }  
        else
        {
            printf("f is not zero\n");
        }
    }

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐