Java里有兩種浮點數類型分別是float和double,兩者最大的區別在于精度、范圍和存儲空間。
float f = 3.14f; double d = 3.14;
float類型占用4字節存儲空間,可表示的數字范圍約為±3.40282347E+38,精度為7位有效數字。double類型占用8字節存儲空間,可表示的數字范圍約為±1.79769313486231570E+308,精度為15位有效數字。可以看出,double類型比float類型的數字范圍更大,精度更高。
在使用浮點數時,我們需要注意精度問題,因為浮點數不是精確的數值。在使用float類型進行計算時,需要加上f后綴,否則默認為double類型。例如以下代碼會編譯錯誤:
float f1 = 3.14; //錯誤,需要加上f后綴 float f2 = 3.14f; //正確
因為double類型的精度高于float類型,因此將double類型的值賦值給float類型時可能會丟失精度。通常情況下,在不需要特別高的精度要求時,使用float類型就夠了。