最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言深入探索浮點數(shù)的使用秘密

 更新時間:2022年04月20日 16:23:47   作者:清風自在?流水潺潺  
在C語言中,浮點數(shù)是一個很重要的類型,浮點數(shù)可以使數(shù)據(jù)更為精確。浮點數(shù)說白了就是帶有小數(shù)點的數(shù)。比如1.6?0.0000?765.2等等,浮點數(shù)具體是怎么用的呢,讓我們一起來看看

一、內(nèi)存中的浮點數(shù)

浮點數(shù)在內(nèi)存的存儲方式為:符號位,指數(shù),尾數(shù)

類型符號位指數(shù)尾數(shù)
float1位(第31位)8位(第23--30位)23位(第0--22位)
double1位(第63位)11位(第52--62位)52位(第0--51位)

注:float 與 double 類型的數(shù)據(jù)在計算機內(nèi)部的表示法是相同的,但由于所占存儲空間的不同,其分別能夠表示的數(shù)值范圍和精度不同。

二、浮點數(shù)存儲實例

浮點數(shù)的轉(zhuǎn)換

  • 將浮點數(shù)轉(zhuǎn)換成二進制
  • 用科學計數(shù)法表示二進制浮點數(shù)
  • 計算指數(shù)偏移后的值

注意:計算指數(shù)時需要加上偏移量,而偏移量的值與類型有關(guān)。

示例:對于指數(shù)6,偏移后的值如下:

float:127 + 6 -> 133

double:1023 + 6-> 1029

實數(shù) 8.25 的在內(nèi)存中的 float 表示

8.25的二進制表示:1000.01 -> 1.00001 * (2 ^ 3)

  • 符號位:0
  • 指數(shù):127 + 3 -> 130 10000010
  • 小數(shù):00001

內(nèi)存中 8.25 的 float 表示:

  • 0 10000010 00001000000000000000000 -> 0x41040000

下面看一下 8.25 是不是在內(nèi)存中表示為 0x41040000 吧:

#include <stdio.h>
 
int main()
{
    float f = 8.25;
    unsigned int* p = (unsigned int*)&f;
    printf("0x%08X\n", *p);
    return 0;
}

下面為輸出結(jié)果:

三、浮點類型的秘密

首先看一下 int 類型和 float 類型的范圍:

int 類型的范圍:[-2 ^ 31,2 ^ 31 - 1]

float 類型的范圍:[-3.4 * 10 ^ 38,3.4 * 10 ^ 38]

這就出現(xiàn)一個問題:int 和 float 都占4個字節(jié)的內(nèi)存,為什么 float 卻比 int 的范圍大得多呢?

解釋如下:

  • float 能表示的具體數(shù)字的個數(shù)與 int 相同
  • float 可表示的數(shù)字之間不是連續(xù)的,存在間隙
  • float 只是一種近似的表示法,不能作為精確數(shù)使用
  • 由于內(nèi)存表示法相對復(fù)雜,float 的運算速度比 int 慢得多

注意:double 與 float 具有相同的內(nèi)存表示法,因此 double 也是不精確的。由于 double 占用的內(nèi)存較多,所能表示的精度比 float 高。

下面看一段 float 類型的不精確示例代碼:

#include <stdio.h>
 
int main()
{
    float f = 3.1415f;
    float fl = 123456789;
    printf("%0.10f\n", f);
    printf("%0.10f\n", fl);
    return 0;
}

下面為輸出結(jié)果:

這個示例就是表示 f 和 fl 小數(shù)點的后 10 位,結(jié)果表明,float 只是一種近似的表示法,不能作為精確數(shù)使用以及float 可表示的數(shù)字之間不是連續(xù)的,存在間隙。

四、小結(jié)

  • 浮點類型與整數(shù)類型的內(nèi)存表示法不同
  • 浮點類型的內(nèi)存表示更復(fù)雜
  • 浮點類型可表示的范圍更大
  • 浮點類型是一種不精確的類型
  • 浮點類型的運算速度較慢

到此這篇關(guān)于C語言深入探索浮點數(shù)的使用秘密的文章就介紹到這了,更多相關(guān)C語言浮點數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)點菜系統(tǒng)

    C語言實現(xiàn)點菜系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)點菜系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言 超詳細講解庫函數(shù)

    C語言 超詳細講解庫函數(shù)

    C語言庫函數(shù)是把自定義函數(shù)放到庫里,是別人把一些常用到的函數(shù)編完放到一個文件里,供程序員使用,下面讓我們一起來詳細了解它
    2022-03-03
  • c++中將二維數(shù)組元素變換為逆向存放的實現(xiàn)代碼

    c++中將二維數(shù)組元素變換為逆向存放的實現(xiàn)代碼

    編程將一個二維數(shù)組元素變換為逆向存放,即按元素在內(nèi)存中的物理排列位置,第一個元素變成倒數(shù)第一個元素,第二個元素變成倒數(shù)第二個元素,依此類推
    2020-11-11
  • 利用Qt制作簡單的日期選擇界面

    利用Qt制作簡單的日期選擇界面

    Qt自帶的日期選擇控件過于丑陋與難用,所以但凡有點小想法的人都會做一個全新的日歷。這篇文章就來利用Qt制作一個簡單的日期選擇界面,感興趣的可以了解一下
    2023-03-03
  • C++遞歸線性陣列搜索數(shù)字的方法

    C++遞歸線性陣列搜索數(shù)字的方法

    這篇文章主要介紹了C++遞歸線性陣列搜索數(shù)字的方法,涉及C++遞歸及數(shù)組操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++實現(xiàn)兩個有序數(shù)組的合并

    C++實現(xiàn)兩個有序數(shù)組的合并

    這篇文章主要為大家詳細介紹了C++實現(xiàn)兩個有序數(shù)組的合并,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語言實現(xiàn)餐飲結(jié)賬管理系統(tǒng)

    C語言實現(xiàn)餐飲結(jié)賬管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)餐飲結(jié)賬管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 深入理解c++實現(xiàn)Qt信號和槽機制

    深入理解c++實現(xiàn)Qt信號和槽機制

    信號和槽機制是 Qt 的核心機制,可以讓編程人員將互不相關(guān)的對象綁定在一起,實現(xiàn)對象之間的通信,本文就來深入理解c++實現(xiàn)Qt信號和槽機制,感興趣的可以了解一下
    2023-08-08
  • Cocos2d-x觸摸事件實例

    Cocos2d-x觸摸事件實例

    這篇文章主要介紹了Cocos2d-x觸摸事件實例,本文代碼中包含大量注釋來說明Cocos2d-x中的觸摸事件使用示例,需要的朋友可以參考下
    2014-09-09
  • C語言?柔性數(shù)組的使用詳解

    C語言?柔性數(shù)組的使用詳解

    柔性數(shù)組(Flexible?Array)是引入的一個新特性,它允許你在定義結(jié)構(gòu)體時創(chuàng)建一個空數(shù)組,而這個數(shù)組的大小可以在程序運行的過程中根據(jù)你的需求進行更改特別注意的一點是:這個空數(shù)組必須聲明為結(jié)構(gòu)體的最后一個成員,并且還要求這樣的結(jié)構(gòu)體至少包含一個其他類型的成員
    2022-03-03

最新評論

图们市| 叙永县| 武安市| 阳朔县| 苗栗县| 鄂托克前旗| 揭西县| 杂多县| 鄂伦春自治旗| 宁武县| 江都市| 黔江区| 乐山市| 蒲城县| 旌德县| 东平县| 桂阳县| 宜阳县| 湘潭市| 衡南县| 永定县| 慈溪市| 长汀县| 五大连池市| 宜丰县| 福安市| 故城县| 鹤庆县| 新龙县| 黄浦区| 固原市| 开封市| 淮北市| 彩票| 新田县| 保德县| 郴州市| 和平区| 峡江县| 虹口区| 巫溪县|