double f=0.0005;
double i=3;
double d=f*i;
double f1=0.0005;
double j=3;
double d1=f1*j;
if(d==d1){
System.out.println("aaa");
}這樣就相當,java中基本資料型別稱為自動變量,自動變數存的是字面值,由於字面值的資料大小可知,生存期可知,出於速度的原因就把它們放在堆疊中,堆疊中的資料可以共享.如int a=3 int b=3 編譯器先處理int a=3;首先它會在堆疊中建立一個變數為a的引用,然後在找字面值等於3的位址,沒有就開闢一個存放3這個字面值的位址,接著處理int b=3;在創建完變數為b的應用程式後,找出有沒有3這個字面值的位址,現在有了,則指向3的位址,這時用==(判斷位址是否相同時)就會為True
1、浮點效能,以前稱為協處理器,486以前並不包含在CPU中(8086~8087,80286~80287,80386~80387=80386DX,80486SX~80487=80486DX,586=58606 ……)浮點運算是高精度的運算方式,主要運用在科學和多媒體中。
2、可以理解為小數點可移動的運算方式。目前速度AMD>>Inter
3、浮點數是指有有限位小數的有理數,如-10.8、0.00、25.01 等。
4、 浮點運算,得到的結果是一個浮點數,計算結果中的小數部分會保留下來。
例如:用浮點運算時,100.0÷3.0=33.33333333。
5、例如一顆子彈打到牆上,有一片土掉落,浮點運算強的,可能還能夠把掉下來的灰塵也表現出來。
望採納
3.14是單精度,3.14159是雙精度。
兩者差異如下:
一、指涉不同
1、單精度:是指電腦表達實數近似值的一種方式。
2、雙精度:此資料型態與單精度資料型態(float)相似,但精確度比float高。
#二、佔用空間不同
1、單精確度:範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,而在正數的時候是從 1.401298E-45 到 3.402823E38 。
2、雙精度:雙精度型佔8 個位元組(64位元)記憶體空間,其數值範圍為-1.79769313486232E308 到1.79769313486232E308。
三、特點不同
1、單精度:數值比以上值小的時候,將會因為尾數的有效位數減少而逐步喪失精度(IEEE 754的規定),或者有的系統則直接採用0值來簡化處理過程。
2、雙精度:編譯時所佔的記憶體空間依不同的編譯器而有所不同,是double float資料類型,C/C 中表示實型變數的一種變數類型。
參考資料來源:百科單精準度
參考資料來源:百科-雙精確度浮點型
浮點由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次方得到,這種表示方法類似於基數為10的科學記數法。
浮點數a由兩個數m和e來表示:a = m * b^e(b的e次方)。
在任一個這樣的系統中,我們選擇一個基數b(記數系統的基底)和精確度p(即使用多少位元來儲存)。 m(即尾數)是形如±d.ddd...ddd的p位數(每一位是介於0到b-1之間的整數,包括0和b-1)。若m的第一位是非0整數,m稱作規格化的。
有一些描述使用一個單獨的符號位元(s 代表 或-)來表示正負,這樣m必須是正的。 e是指數。
我們可以用這3種方法來表示浮點數:
1、BCD 代碼。
2、 階碼尾數表示法。
3、 我們可以把第二種方法改造一下,就能得到更好的方法。先把一個浮點數的小數點移到最後,用N=M*RC 表示,R=10,然後再把M 轉換為二進位B,再用C 做階碼,B 做尾數用階碼尾數法表示。
例如: 3.14159=314159*10^(-5)。
314159 用二進位表示為1001100101100101111。
用這種方法不僅可以精確表示浮點數的值,還可以充分的利用儲存空間。
#擴充資料:
浮點運算單元(FPU)
浮點數運算和整數運算不同,所以運算單元當然不同。早期的浮點處理器是作為 CPU 的「外部協處理器」出現的。 x87 FPU 特別指與 x86 處理器配對的浮點協處理器架構。
有以下要點:
1、浮點暫存器採用堆疊結構。
深度為 8,寬度為 80 位,即 8 個 80 位元的暫存器。
名稱為 ST(0) ~ ST(7),堆疊頂端為 ST(0),編號分別為 0 ~ 7。
2、所有浮點運算都以 80 位元拓展精度進行。
3、浮點數在浮點暫存器和記憶體之間傳送。
(1)float、double、long double 型的變數在記憶體中分別以 IEEE 754 單精度、雙精度、擴展精度表示,分別佔 32 位,64 位,96 位(前 16 位無效)。
(2)float、double、long double 類型變數在浮點暫存器中都以 80 位元拓展精度表示。
(3)從浮點暫存器到記憶體:80 位元拓展精度格式轉換為 32 位元或 64 位元。
(4)從記憶體到浮點暫存器:32 位元或 64 位元轉換為 80 位元擴充精度格式。
參考資料來源:百科全書-浮點
百科-浮點表示法
以上是深入解析JAVA中double類型的浮點運算的詳細內容。更多資訊請關注PHP中文網其他相關文章!