浮點型資料型態表示實數,包含小數部分。現實世界的資料複雜,需要支援實數的資料型態。
一、浮點型常數 Java的實數常數有兩種表示法:十進制數形式,由數字和小數點組成,且必須有小數點,如0.123, .123, 123. ,123.0 。 2.科學計數法形式。如:123e3或123E3,其中e或E之前必須有數字,且e或E後面的指數必須為整數。實數常數在機器中佔64位,具有double型的值。對於float型的值,則要在數字後面加上f或F,如12.3F,它在機器中佔32位,且表示精度較低。
浮點型變數有兩種:float和double。 float佔32位,取值範圍為3.4e-038~3.4e 038;而double佔64位,取值範圍為1.7e-308~1.7e 308。 double類型比float類型具有更高的精度和更大的表示範圍,通常在科學計算等需要高精度的場景中使用。
在Java中,可以使用float和double來定義浮點型變數。例如: float f; // 指定變數f為float型 double d; // 指定變數d為double型 與C、C 不同,Java沒有無符號整數類型,並且規定了整數和浮點型資料所佔的記憶體位元組數。這種規定確保了Java程式的安全性、穩健性和平台無關性。這意味著不同的Java實作在處理整數和浮點型資料時具有一致的行為,無論運行在哪個平台上,結果都是可預測的。
位元運算通常在硬體控制中使用,表達式本身無法確定具體意義,需結合實際場景。
&叫做“按位與”,其規則是:0&0=0 1&0=0 0&1=0 1&1=1
“|”叫做“位元或”,運算規則是:0|0=0 1|0=1 0|1=1 1|1=1
0x7fffff用32位元二進位表示就是 0000 0000 0111 1111 1111 1111 1111 1111
根據位元與的運演算法則就是把bits的高9位元清零。
0x800000用32位元二進位表示是 0000 0000 1000 0000 0000 0000 0000 0000
根據位元或的運演算法則就是把第24位置1。
那麼綜合來看,((bits & 0x7fffff)|0x800000)的意思就是先把bits的高9位清零,然後再把第24位置1。
關於前半部分,「
至於問號,就不用解釋了吧?
浮點數在做運算後是會出現誤差的,這很正常。
double a=2.00-1.10;
double b=0.90;
System.out.print(a==b);
結果會輸出false
所以有時在判斷浮點數相等時會用到一個方法,那就是
public static boolean isEqual(double a,double b){
final double epsilon=0.00000001;
return Math.abs(a-b) } 綜上所述,浮點數經過運算後是會出現誤差的,0.7799999713897705就是將float轉換為double導致誤差出現,0.78是float正常運算
以上是什麼是java浮點數常數的詳細內容。更多資訊請關注PHP中文網其他相關文章!