国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

你知道Java中float的取值范圍嗎

2019-11-18 11:15:56
字體:
來源:轉載
供稿:網友

  規格化表示
  java中的浮點數采用的事IEEE Standard 754 Floating Point Numbers標準,該標準的規范可以參考http://blog.csdn.net/treeroot/articles/94752.aspx.
  float占用4個字節,和int是一樣,也就是32bit.
  第1個bit表示符號,0表示正數,1表示負數,這個很好理解,不用多管.
  第2-9個bit表示指數,一共8為(可以表示0-255),這里的底數是2,為了同時表示正數和負數,這里要減去127的偏移量.這樣的話范圍就是(-127到128),另外全0和全1作為非凡處理,所以直接表示-126到127.
  剩下的23位表示小數部分,這里23位表示了24位的數字,因為有一個默認的前導1(只有二進制才有這個特性).
  最后結果是:(-1)^(sign) * 1.f * 2^(eXPonent)
  這里:sign是符號位,f是23bit的小數部分,exponent是指數部分,最后表示范圍是(因為正負數是對稱的,這里只關心正數)
  2^(-126) ~~ 2(1-2^(-24)) * 2^127
  這個還不是float的取值范圍,因為標準中還規定了非規格化表示法,另外還有一些非凡規定.
  
  非規格化表示:
  當指數部分全0而且小數部分不全0時表示的是非規格化的浮點數,因為這里默認沒有前導1,而是0.
  取值位0.f * 2^(-126),表示范圍位 2^(-149)~~ (1-2^(-23)) * 2^(-126) 這里沒有考慮符號.這里為什么是-126而不是-127? 假如是-127的話,那么最大表示為
  2^(-127)-2^(-149),很顯然2^(-127) ~~2^(-126) 就沒法表示了.
  
  其他非凡表示
  1.當指數部分和小數部分全為0時,表示0值,有+0和-0之分(符號位決定),0x00000000表示正0,0x80000000表示負0.
  2.指數部分全1,小數部分全0時,表示無窮大,有正無窮和負無窮,0x7f800000表示正無窮,0xff800000表示負無窮.
  3.指數部分全1,小數部分不全0時,表示NaN,分為QNaN和SNaN,Java中都是NaN.
  
  結論:
  可以看出浮點數的取值范圍是:2^(-149)~~(2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大同市| 湖南省| 明水县| 濮阳县| 逊克县| 莒南县| 大宁县| 平果县| 安平县| 永年县| 偃师市| 会东县| 德格县| 称多县| 登封市| 磐安县| 阿拉善右旗| 景洪市| 汶上县| 瓦房店市| 吉木萨尔县| 定襄县| 徐闻县| 金平| 克东县| 青州市| 梅州市| 安康市| 阳城县| 大石桥市| 封丘县| 安溪县| 滁州市| 林甸县| 锦屏县| 元朗区| 涿鹿县| 淮南市| 丹寨县| 开江县| 清水县|