深入解析JAVA中double類型的浮點運算

王林
發布: 2024-01-15 09:57:22
轉載
1231 人瀏覽過

JAVA的double類型的浮點運算要解釋的

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

cpu浮點運算是什麼

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、例如一顆子彈打到牆上,有一片土掉落,浮點運算強的,可能還能夠把掉下來的灰塵也表現出來。

望採納

C語言中的單精確度和雙精確度浮點型的差別! 3 14是哪種? 3 14159呢

3.14是單精度,3.14159是雙精度。

兩者差異如下:

一、指涉不同

1、單精度:是指電腦表達實數近似值的一種方式。

2、雙精度:此資料型態與單精度資料型態(float)相似,但精確度比float高。

深入解析JAVA中double類型的浮點運算

#二、佔用空間不同

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。

用這種方法不僅可以精確表示浮點數的值,還可以充分的利用儲存空間。

深入解析JAVA中double類型的浮點運算

#擴充資料:

浮點運算單元(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中文網其他相關文章!

相關標籤:
來源:docexcel.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!