zoukankan      html  css  js  c++  java
  • C语言中的单精度双精度数的有效位数

    #include "stdio.h"
    #include "conio.h"

    void main()
    {
        printf("%.20f\n",0.1234567890123456789f);
        getch();
    }

    观察在VC6,WinTC中的运行结果,可能是

    0.123456789104328156000

    0.12345678901234567700

    而一般在C语言教材上说:

    浮点数7位有效数字。
    双精度数16位有效数字。

    单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。  双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位

    单精度浮点数的实际有效精度为24位二进制,这相当于 24*log102≈7.2 位10进制的精度,所以平时我们说“单精度浮点数具有7位精度”。(精度的理解:当从1.000...02变化为1.000...12时,变动范围为 2-23,考虑到因为四舍五入而得到的1倍精度提高,所以单精度浮点数可以反映2-24的数值变化,即24位二进制精度)

    浮点数7位有效数字。(应该是单精度数)
    双精度数16位有效数字。
    浮点数取值范围:
    负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。
    双精度数取值范围:
    负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。

  • 相关阅读:
    AOP面向方面编程
    Struts2基于注解的Action配置
    地图api汇总
    Visual C++ 嵌入汇编代码
    C# ASP.net中用到的JWT身份验证
    Asp.Net Forms 身份验证
    .Net 面试常见问题
    Web Api 自动生成帮助文档
    .Net常见的一些区别
    创建Silverlight 5浏览器内受信应用
  • 原文地址:https://www.cnblogs.com/emanlee/p/1722541.html
Copyright © 2011-2022 走看看