在 C 語言中,浮點(diǎn)數(shù)在內(nèi)存中的存儲方式為:符號位,指數(shù),位數(shù)。float 與 double 類型的數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的表示法是相同的,但由于所占存儲空間的不同,其分別能夠表示的數(shù)值范圍和精度不同。如下所示:
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括大關(guān)網(wǎng)站建設(shè)、大關(guān)網(wǎng)站制作、大關(guān)網(wǎng)頁制作以及大關(guān)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,大關(guān)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到大關(guān)省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!下來我們就來講講關(guān)于浮點(diǎn)數(shù)的轉(zhuǎn)換:1、將浮點(diǎn)數(shù)轉(zhuǎn)換成二進(jìn)制;2、用科學(xué)計(jì)數(shù)法表示二進(jìn)制浮點(diǎn)數(shù);3、計(jì)算指數(shù)偏移后的值。注意:計(jì)算指數(shù)時(shí)需要加上偏移量,而偏移量的值與類型有關(guān)。那么實(shí)數(shù) 8.25 在內(nèi)存中的 float 該怎么表示呢?8.25 的二進(jìn)制表示:1000.01 ==> 1.00001 * (2 ^ 3);符號位:0; 指數(shù):127 + 3 ==> 130 ==> 1000 0010; 小數(shù):00001 所以內(nèi)存中8.25的 float 表示:0 1000 0010 0000 1000 0000 0000 0000 000 ==> 0x4104 0000
我們在 Linux 中做個(gè) 8.25 的轉(zhuǎn)換實(shí)驗(yàn),看看它是否在內(nèi)存中表示為 0x4104 0000,代碼如下:
#include <stdio.h> int main() { float f = 8.25; unsigned int* p = (unsigned int*)&f; printf("0x%08X\n", *p); return 0; }
我們看到打印出的結(jié)果如下,確實(shí)是我們分析的那樣。
在 C 語言中,int 類型的范圍為:[ -2^31, 2^31 - 1]; float 類型的范圍是:[ -3.4 * 10^38, 3.4 * 10^38 ]。float 能表示的具體數(shù)字的個(gè)數(shù)與 int 相同??杀硎镜臄?shù)字之間不是連續(xù)的,存在間隙。它只是一種近似的表示法,不能作為精確數(shù)使用。由于內(nèi)存表示法相對復(fù)雜,float 的運(yùn)算速度比 int 慢的多。注意:double 與 float 具有相同的內(nèi)存表示法,因此 double 也是不精確的。由于 double 占用的內(nèi)存較多,所能表示的精度也就比 float 高。
下來我們做個(gè)實(shí)驗(yàn),以驗(yàn)證 float 所表示的數(shù)是不精確的,代碼如下:
#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 本應(yīng)該是3.141500000,f1 本應(yīng)該是 123456789.0000000000,可是結(jié)果是 f = 3.1414999962; f1 = 123456792.0000000000。這也從側(cè)面證實(shí)了我們說的是正確的,用浮點(diǎn)數(shù)表示的數(shù)字是不精確的。
那么關(guān)于浮點(diǎn)數(shù),我們可總結(jié)為:1、浮點(diǎn)類型與整數(shù)類型的內(nèi)存表示法不同;2、內(nèi)存表示更加復(fù)雜;3、可表示的范圍更大;4、是一種不精確的類型;5、它的運(yùn)算速度比較慢。關(guān)于浮點(diǎn)數(shù)的相關(guān)知識我們就先學(xué)習(xí)到這了,后面我們繼續(xù)學(xué)習(xí) C 語言的其他知識。
歡迎大家一起來學(xué)習(xí) C 語言,可以加我QQ:243343083。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享題目:C之浮點(diǎn)數(shù)(三)-創(chuàng)新互聯(lián)
文章起源:http://jinyejixie.com/article14/cesgde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站、微信公眾號、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容