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。

  • 相关阅读:
    日常
    hdoj 5690 All X (快速幂+取模)
    hdoj 4004 The Frog's Games(二分)
    Mac androidStudio cannot resolve corresponding JNI function
    Mac 切换JDK版本
    MAC系统 如何显示隐藏的文件(文件夹)
    C 读写文件以及简单的文件加密
    C 双向链表的简单排序实现
    Android ViewDragHelper详解
    android Toast的内容过长,如何居中显示?
  • 原文地址:https://www.cnblogs.com/xiayong123/p/3717526.html
Copyright © 2011-2022 走看看