float double

float : 單精度浮點數java

double : 雙精度浮點數面試

二者的主要區別以下:spa

  01.在內存中佔有的字節數不一樣code

    單精度浮點數在機內存佔4個字節blog

    雙精度浮點數在機內存佔8個字節內存

  02.有效數字位數不一樣it

    單精度浮點數有效數字8位編譯

    雙精度浮點數有效數字16位class

  03.數值取值範圍float

    單精度浮點數的表示範圍:-3.40E+38~3.40E+38

    雙精度浮點數的表示範圍:-1.79E+308~-1.79E+308

  04.在程序中處理速度不一樣

    通常來講,CPU處理單精度浮點數的速度比處理雙精度浮點數快

若是不聲明,默認小數爲double類型,因此若是要用float的話,必須進行強轉

  例如:float  a=1.3; 會編譯報錯,正確的寫法 float a = (float)1.3;或者float a = 1.3f;(f或F均可以不區分大小寫)

注意:float是8位有效數字,第7位數字將會四捨五入

面試題:

  1.java中3*0.1==0.3將會返回什麼?true仍是false?

   fale,由於浮點數不能徹底精確的表示出來,通常會損失精度。

  2.java中float f = 3.4;是否正確?

     不正確,3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於向下轉型會造  成精度損失,所以須要強制類型轉換float f = (float)3.4;或者寫成 float f = 3.4f;才能夠。

複製代碼
public static void main(String[] args) {
        System.out.println(3*0.1);
        System.out.println(3*0.1==0.3);
    //float是8位有效數字,第7位數字將會四捨五入 float a =1.32344435f; System.out.println(a); }
複製代碼

輸出結果:

相關文章
相關標籤/搜索