欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂Java培訓簡析Java中的浮點數(shù)分析

2018-06-22 14:05:09 1232瀏覽

本篇文章扣丁學堂Java培訓小編和大家分享一下Java中的浮點數(shù)分析情況,文章中會有代碼列出供大家參考。對Java感興趣的小伙伴現(xiàn)在就隨扣丁學堂的小編一起來了解一下吧。



扣丁學堂Java培訓簡析Java中的浮點數(shù)分析



浮點數(shù)分為單精度和雙精度,Java中的單精度和雙精度分別為float和double.你們知道float和double是怎么存儲的嗎?


float占4個字節(jié),double占8個字節(jié),為了方便起見,這里就只討論float類型。float其實和一個int型的大小是一樣的,一共32位,第一位表示符號,2-9表示指數(shù),后面23位表示小數(shù)部分。


這里只舉一個例子,希望能拋磚引玉,就是研究一下浮點數(shù)0.1的存儲形式,先運行這個程序。


public class Test{
   public static void main(String[] args) {
   int x = 0x3d800000; 
   int i = 1 << 22;
   int j = 1 << 4;
   float f = 0.1f;
   int y = Float.floatToIntBits(f);
   float rest = f - ( (float) 1) / j;
  while (i > 0) {
   j <<= 1;
   float deta = ( (float) 1) / j;
   if (rest >= deta) {
   rest -= deta;
   x |= i;
   }
   i >>= 1;
   }
   pr(x);
   pr(y);
   }
  static void pr(int i) {
   System.out.println(Integer.toBinaryString(i));
   }
  }


結(jié)果:


111101110011001100110011001101
111101110011001100110011001101


程序說明:


int x=0x3d80000;


因為浮點表示形式為1.f*2n-127我們要表示0.1,可以知道n-127=-4,到n=123


符號為正,可知前9是 001111011,暫時不考慮后面的23位小數(shù),所以我們先假設(shè)x=0x3d800000;



int i = 1 << 22;


i初始為第右起第23位為1,就是x的第10位



int j = 1 << 4;


i初始為4,因為n-127為-4,這里是為了求它的倒數(shù).



float f = 0.1f;
int y = Float.floatToIntBits(f);


y就是它的32位表示



float rest = f - ( (float) 1) / j;


這個rest表示除了1.f中的1剩下的,也就是0.f



while (i > 0) {
j <<= 1; 
float deta = ( (float) 1) / j;
if (rest >= deta) {
rest -= deta;
x |= i;
}
i >>= 1;
}


這個循環(huán)來計算23位小數(shù)部分,如果rest不小于deta,表示這個位可以置為1。


以上就是扣丁學堂Java在線學習小編給大家分享的Java中的浮點數(shù)分析,希望對小伙伴們有所幫助。想要了解更多內(nèi)容的小伙伴可以登錄扣丁學堂官網(wǎng)咨詢,扣丁學堂是專業(yè)的Java培訓機構(gòu),不僅有專業(yè)的老師和與時俱進的課程體系,還有大量的Java在線視頻供學員觀看學習。喜歡Java開發(fā)想要學習的小伙伴快快行動吧。扣丁學堂Java技術(shù)交流群:670348138。


扣丁學堂微信公眾號

【關(guān)注微信公眾號獲取更多學習資料】



查看更多關(guān)于“Java開發(fā)資訊的相關(guān)文章>>



標簽: 扣丁學堂Java培訓 Java中的浮點數(shù)分析 Java培訓 Java基礎(chǔ)教程 Java學習視頻 Java教學視頻 java入門教程 Java教程視頻 java在線學習 java在線視頻 java在線教程

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部