亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

c語言float四舍五入 float型保留幾位小數(shù)和有效數(shù)字


c語言float四舍五入 float型保留幾位小數(shù)和有效數(shù)字

文章插圖
電子計算機只能存儲0和1,人類世界所能認(rèn)識的任何數(shù)據(jù)都需要通過轉(zhuǎn)換為二進(jìn)制再進(jìn)行存儲 。整數(shù)(int)型轉(zhuǎn)換為二進(jìn)制存儲很好理解,那么float型數(shù)據(jù)計算機又是怎么存儲的呢?常說的浮點型數(shù)據(jù)精度丟失和數(shù)據(jù)溢出又是怎么回事呢?
浮點數(shù)示意圖
位和字節(jié)位:來自英文bit,音譯為“比特”,表示二進(jìn)制位 。位是計算機內(nèi)部數(shù)據(jù)儲存的最小單位,11010100是一個8位二進(jìn)制數(shù) 。
字節(jié):來自英文Byte,音譯為“拜特”,習(xí)慣上用大寫的“B”表示 。字節(jié)是計算機中數(shù)據(jù)處理的基本單位 。計算機中以字節(jié)為單位存儲和解釋信息,規(guī)定一個字節(jié)由八個二進(jìn)制位構(gòu)成,即1個字節(jié)等于8個比特(1Byte=8bit) 。八位二進(jìn)制數(shù)最小為00000000,最大為11111111;通常1個字節(jié)可以存入一個ASCII碼,2個字節(jié)可以存放一個漢字國標(biāo)碼 。
int型數(shù)據(jù)存儲int型數(shù)據(jù)根據(jù)平臺類型不同,所占用字節(jié)大小也不同,這里就按正常的4個字節(jié)來講 。整型分有符號和無符號,有符號左邊最高位為符號位 。
unsigned int和signed in按四個字節(jié)計算,也就是4*8=32位 。int默認(rèn)是signed有符號位的 。所以,unsigned int表示的范圍是:0~2的32次方-1 。signed int表示的范圍是:-2的31次方~2的31次方-1 。
例如+3,轉(zhuǎn)為二進(jìn)制是0000 0011,但是計算機是按補碼存儲整型數(shù)據(jù)的,正數(shù)的補碼就是其本身,但是負(fù)數(shù)的補碼就不是了 。這里不作細(xì)講,有興趣的朋友可以翻看我前面的文章,里面有詳細(xì)介紹 。
整形數(shù)據(jù)存儲方式
float型數(shù)據(jù)存儲浮點數(shù)轉(zhuǎn)二進(jìn)制方法十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)采用”乘2取整,按序取出”法 。
整數(shù)部分按整數(shù)方式轉(zhuǎn),用短除法,小數(shù)部分按如下方式,最后再用小數(shù)點合起來;
具體做法是:用2乘十進(jìn)制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個積,再將積的整數(shù)部分取出,如此進(jìn)行,直到積中的小數(shù)部分為零,或者達(dá)到所要求的精度為止 。然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位 。
例:0.734375轉(zhuǎn)二進(jìn)制,結(jié)果是0.101111 。
0.734375 x 2 = 1.46875
0.46875 x 2 = 0.9375
0.9375 x 2 = 1.875
0.875 x 2 = 1.75
0.75 x 2 = 1.5
0.5 x 2 = 1.0
IEEE二進(jìn)制浮點數(shù)算術(shù)標(biāo)準(zhǔn)浮點數(shù)的存儲方式與整型數(shù)據(jù)不同 。浮點數(shù)運算有自己的標(biāo)準(zhǔn)標(biāo)準(zhǔn),也稱IEEE二進(jìn)制浮點數(shù)算術(shù)標(biāo)準(zhǔn)(IEEE 754),是20世紀(jì)80年代以來最廣泛使用的浮點數(shù)運算標(biāo)準(zhǔn),為許多CPU與浮點運算器所采用 。
根據(jù)國際標(biāo)準(zhǔn)IEEE(電氣和電子工程協(xié)會)規(guī)定,任何一個浮點數(shù)NUM的二進(jìn)制數(shù)可以寫為:NUM = (-1) ^ S * M * 2 ^ E;//(S表示符號,E表示階乘,M表示有效數(shù)字)
這個標(biāo)準(zhǔn)是什么意思呢?其實說白了就是二進(jìn)制的科學(xué)計數(shù)法:
十進(jìn)制:12345678 = 1.2345678*10^7 ;
二進(jìn)制:例如十進(jìn)制11.0,寫成二進(jìn)制就是1011.0,用IEEE標(biāo)準(zhǔn)表示就是(-1)^0 × 1.011 × 2^3 ,s=0,M=1.011,E=3;
浮點數(shù)存儲浮點數(shù)在內(nèi)存中的存儲按下圖所示方式存儲:
1、對于S,用來表示符號,0為正,1為負(fù)
2、對于M:規(guī)定M在存儲時舍去第一個1,只存儲小數(shù)點之后的數(shù)字 。這樣做節(jié)省了空間,以float類型為例,就可以保存23位小數(shù)信息,加上舍去的1就可以用23位來表示24個有效的信息 。
3、對于E(指數(shù))E是一個字節(jié)(8位)整數(shù)所以E的取值范圍為(0~ 255),但是在計數(shù)中指數(shù)是可以為負(fù)的,所以規(guī)定在存入E時,在它原本的值上加上中間數(shù)(127),在使用時減去中間數(shù)(127),這樣E的真正取值范圍就成了(-127~128) 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: