• C语言浮点类型有效位(float, double,long double)


    为什么叫浮点类型:

    一个数可以用指数表示,但可以不同小数位多种形式来表示,小数可以浮动。

    在 C 语言中,实数是以指数的形式存放在存储单元的。
    一个实数表示为指数可以不止一种形式,
    如 4.3242 可以表示为 
    4.3242*10^00.43242*10^10.043242*10^2432.42*10^-2 等,
    他们代表同一个值。
    可以看到小数点的位置是可以在 43242 几个数字之间浮动的,
    只要在小数点位置浮动的同时改变指数的值,
    就可以保证它的值不会改变。由于小数点的位置可以浮动,
    所以实数的指数形式称为浮点数。

    规范化写法:小数点前面为0

    规范化的指数形式:
    在指数形式的多种表示方式中把小数部分中小数点前的数字为 0,
    小数点后第 1 位数字不为 0 的表示形式称为规范化的指数形式,
    如 0.43242*10^1 就是 4.3242 的规范化的指数形式。
    一个实数只有一个规范化的指数形式。

    浮点数类型包括

     float(单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点型)。

    在存储时,系统将实型数据分成小数部分和指数部分两个部分、分别存储。

    如 3.14159 在内存中的存放形式如下:

    0.314159  101

    算6个有效位

    这个决定了精度:

    float:有效位6-7位
    double:15-16
    long double:18-19
    当要表示一个精确的数字时候非常重要
    否则可能丢失精度。

    例子:

        float a = 123456789;
        float b = 1234567890;
        float c = 12345678900;
    
        printf("
    %f
    ",a);
        printf("
    %f
    ",b);
        printf("
    %f
    ",c);
    
    输出:
    123456792.000000
    
    1234567936.000000
    
    12345678848.000000
    只有前面7位是精确的后面的数据就未必了。
  • 相关阅读:
    Bootstrap模态框modal的高度和宽度设置
    入门学习Linux常用必会命令实例详解
    Linux 系统中用户切换(su user与 su
    hdu 3549 Flow Problem(最大流模板题)
    第三章 学后心得及总结 【物联网1132-11】
    Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
    面试题4
    Fp关联规则算法计算置信度及MapReduce实现思路
    POJ 1679 The Unique MST 推断最小生成树是否唯一
    论程序猿的社会地位
  • 原文地址:https://www.cnblogs.com/straybirds/p/14806653.html
Copyright © 2020-2023  润新知