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。

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/emanlee/p/1722541.html
Copyright © 2011-2022 走看看