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

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

 更新時間:2006年12月23日 00:00:00   作者:  
文章來源:csdn 作者:treeroot

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

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

  這里只舉一個例子,希望能拋磚引玉,就是研究一下浮點數(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.

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

相關(guān)文章

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

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

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

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

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

    Java集合教程之Collection實例詳解

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

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

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

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

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

    關(guān)于Selenium的UI自動化測試屏幕截圖功能實例代碼

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

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

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

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

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

    Java?限制前端重復(fù)請求的實例代碼

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

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

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

最新評論

穆棱市| 老河口市| 赤城县| 大洼县| 大城县| 临湘市| 元谋县| 宜丰县| 喀喇| 湾仔区| 南陵县| 南郑县| 广饶县| 瓦房店市| 土默特右旗| 翼城县| 江达县| 信丰县| 襄汾县| 湾仔区| 建阳市| 娱乐| 陆良县| 郁南县| 丹寨县| 博罗县| 缙云县| 克拉玛依市| 鲁山县| 合水县| 天气| 南充市| 泗洪县| 浦北县| 辉县市| 阳城县| 普兰县| 濮阳县| 平阳县| 荣昌县| 五华县|