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

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

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

2019-11-18 13:14:40
字體:
來源:轉載
供稿:網友

  規格化表示
  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.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 拜城县| 文成县| 彰武县| 出国| 南和县| 华亭县| 始兴县| 姚安县| 邯郸市| 汉寿县| 广安市| 哈巴河县| 磐石市| 丹棱县| 七台河市| 长海县| 仁布县| 定南县| 景宁| 广饶县| 张家口市| 青浦区| 蓬溪县| 桐柏县| 麦盖提县| 阜新| 平乡县| 定边县| 沙雅县| 南岸区| 丰城市| 平原县| 镇赉县| 宁河县| 巴南区| 会宁县| 新建县| 大新县| 南溪县| 宜丰县|