• float 与 double


    1. float 与double都是浮点型数据类型。

    2. 常量值1.3333325的数据类型是float还是double,如何显示说明数据类型?

       小数一般默认为是double类型。

       显示说明浮点类型的方法是在数值后加f或lf, 比如 1.3f 是浮点型, 1.3lf 是double。

    3.float与double的区别:

       (1)使用内存不同, float 使用4个字节,double使用8个字节

       (2)计算速度不同,double比float慢得多

       (3)表示的数值精度不同,double精度更高

    4.float进行运算,出现“大数吃小数”

     下面的代码运行结果为多少?

    float f = 600.0 + 0.000023;
    printf("f  =%f 
    ", f);  

    答案是 f = 600.000000, 不是600.000023

    因为浮点型是以指数形式表示的,如下图所示,

      s是符号位,f是有效位,e是指数位,s+f+e共占32bit

    浮点型进行运算时,会先保证指数对齐(以大数为准),再运算。

    比如 0.5 + 0.125 = (-1)0x1.0x2-1 + (-1)0x1.0x2-3 = (-1)0x1.0x2-1 + (-1)0x0.01x2-1 = (-1)0x1.01x2-1 

    可见小数会发生向右移位。因为有效位有24位,当大数是小数的224(16,777,216‬)倍时,移动24位会导致小数的有效位为0,运算结果和大数一样,即大数吃小数。

    5.???

    下面的运算结果怎么解释?

    float f = 600.0 + 0.000023;
    printf("f  =%f 
    ", f);  // 600.000000
    printf("600.0 + 0.000023 = %f ", 600.0 + 0.000023); // 600.000023

  • 相关阅读:
    1-1-LVS负载均衡
    linux的软链接和硬连接的区别
    linux的目录结构及配置文件
    C6和C7对比
    1-6 RAID级别介绍
    Animation动画(一)
    Android中的BroadCast静态注册与动态注册
    Android中Action
    隐式Intent
    Volley框架使用(POST)
  • 原文地址:https://www.cnblogs.com/blackandwhite/p/15048244.html
Copyright © 2020-2023  润新知