最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的浮點(diǎn)數(shù)分析

 更新時(shí)間:2006年12月23日 00:00:00   作者:  
文章來(lái)源:csdn 作者:treeroot

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

   float占4個(gè)字節(jié),double占8個(gè)字節(jié),為了方便起見(jiàn),這里就只討論float類型.
   float其實(shí)和一個(gè)int型的大小是一樣的,一共32位,第一位表示符號(hào),2-9表示指數(shù),后面23位表示小數(shù)部分.這里不多說(shuō),請(qǐng)參考:http://blog.csdn.net/treeroot/archive/2004/09/05/95071.aspx

  這里只舉一個(gè)例子,希望能拋磚引玉,就是研究一下浮點(diǎn)數(shù)0.1的存儲(chǔ)形式,先運(yùn)行這個(gè)程序.


  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

  程序說(shuō)明:
   int x=0x3d80000;
   因?yàn)楦↑c(diǎn)表示形式為1.f*2n-127我們要表示0.1,可以知道n-127=-4,到n=123
   符號(hào)為正,可知前9是 001111011,暫時(shí)不考慮后面的23位小數(shù),所以我們先假設(shè)x=0x3d800000;


  int i = 1 << 22;
   i初始為第右起第23位為1,就是x的第10位

  int j = 1 << 4;

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

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

   y就是它的32位表示

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

   這個(gè)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;
   }

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

  其他的不多說(shuō)了,輸入結(jié)果是一樣的,可以說(shuō)0.1這個(gè)浮點(diǎn)數(shù)肯定是不精確的,但是0.5可以精確的表示,想想為什么吧

相關(guān)文章

  • java實(shí)現(xiàn)短信驗(yàn)證碼5分鐘有效時(shí)間

    java實(shí)現(xiàn)短信驗(yàn)證碼5分鐘有效時(shí)間

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)短信驗(yàn)證碼5分鐘有效時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Java實(shí)現(xiàn)設(shè)計(jì)模式之責(zé)任鏈模式

    Java實(shí)現(xiàn)設(shè)計(jì)模式之責(zé)任鏈模式

    責(zé)任鏈模式是一種行為設(shè)計(jì)模式,允許你將請(qǐng)求沿著處理鏈發(fā)送,然后處理者都可對(duì)其進(jìn)行處理,完成后可以再將其傳遞給下一個(gè)處理者。下面將會(huì)舉例說(shuō)明什么是責(zé)任鏈模式,責(zé)任鏈模式該如何使用
    2022-08-08
  • Java集合教程之Collection實(shí)例詳解

    Java集合教程之Collection實(shí)例詳解

    集合,或者叫容器,是一個(gè)包含多個(gè)元素的對(duì)象,下面這篇文章主要給大家介紹了關(guān)于Java集合教程之Collection的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • java多線程編程之慎重使用volatile關(guān)鍵字

    java多線程編程之慎重使用volatile關(guān)鍵字

    volatile關(guān)鍵字相信了解Java多線程的讀者都很清楚它的作用。volatile關(guān)鍵字用于聲明簡(jiǎn)單類型變量,下面看一下為什么要慎重使用volatile關(guān)鍵字
    2014-01-01
  • MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案

    MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案

    今天小編就為大家分享一篇關(guān)于MAC上IntelliJ IDEA的svn無(wú)法保存密碼解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • 關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼

    關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼

    今天小編就為大家分享一篇關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Java中數(shù)據(jù)庫(kù)加密的方式分享

    Java中數(shù)據(jù)庫(kù)加密的方式分享

    在現(xiàn)今互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)安全已經(jīng)成為了我們必須要面對(duì)的重要課題,在本文中,我們將會(huì)介紹Java中常用的幾種數(shù)據(jù)庫(kù)加密方式并分析一下它們的優(yōu)缺點(diǎn),希望對(duì)大家有所幫助
    2023-05-05
  • win10安裝rabbitMQ的詳細(xì)步驟

    win10安裝rabbitMQ的詳細(xì)步驟

    RabbitMQ是一個(gè)開(kāi)源的消息中間件(Message Broker),它基于AMQP協(xié)議設(shè)計(jì),用于在分布式系統(tǒng)中實(shí)現(xiàn)消息的高效、可靠傳輸,本文給打擊介紹了win10安裝rabbitMQ的詳細(xì)步驟,文中通過(guò)圖文講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Java?限制前端重復(fù)請(qǐng)求的實(shí)例代碼

    Java?限制前端重復(fù)請(qǐng)求的實(shí)例代碼

    這篇文章主要介紹了Java?限制前端重復(fù)請(qǐng)求,文中給大家提到了JAVA利用自定義本地鎖解決重復(fù)提交的問(wèn)題,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 在CentOS上安裝Java 17并實(shí)現(xiàn)多版本共存的詳細(xì)教程

    在CentOS上安裝Java 17并實(shí)現(xiàn)多版本共存的詳細(xì)教程

    在現(xiàn)代軟件開(kāi)發(fā)中,Java 作為一種廣泛使用的編程語(yǔ)言,其版本更新頻繁,不同項(xiàng)目可能依賴不同版本的 Java 運(yùn)行環(huán)境,CentOS 作為一款流行的 Linux 發(fā)行版,常被用于服務(wù)器部署和開(kāi)發(fā)環(huán)境,本文將詳細(xì)介紹如何在 CentOS 上安裝 Java 17,并實(shí)現(xiàn)與現(xiàn)有 Java 8 的多版本共存
    2025-03-03

最新評(píng)論

巧家县| 米林县| 汉阴县| 甘德县| 景泰县| 成都市| 斗六市| 榆社县| 内黄县| 京山县| 荥阳市| 宁阳县| 尤溪县| 陵川县| 浪卡子县| 德江县| 海阳市| 天镇县| 澄迈县| 汕头市| 潮州市| 东至县| 张掖市| 株洲市| 奈曼旗| 镇巴县| 三门县| 苍梧县| 长子县| 宝山区| 乐业县| 靖远县| 哈尔滨市| 云梦县| 禹州市| 剑川县| 富平县| 奇台县| 龙江县| 郎溪县| 历史|