欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

Java編程

當(dāng)前位置:主頁(yè) > 軟件編程 > Java編程 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:Java編程|點(diǎn)擊: 次

文章來(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可以精確的表示,想想為什么吧

上一篇:Toolbar制作菜單條過(guò)程詳解

欄    目:Java編程

下一篇:Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)器

本文標(biāo)題:Java中的浮點(diǎn)數(shù)分析

本文地址:http://mengdiqiu.com.cn/a1/Javabiancheng/8554.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有