2016-06-26 57 views
-5

的代碼是:什麼是Java浮動默認精度

public static void main(String [] args) { 

    float f = 5.69f; 

    String floatStr = String.format("%.15f", f); 
    System.out.println(f); 
    System.out.println(floatStr); 
} 

的f是5.69。 floatStr是5.690000057220459。 System.out.println是否有默認精度?

+3

您的標題和問題不要求相同的事情。 *「什麼是Java浮點數默認精度」*和*「是否有System.out.println的默認精度?」*是不同的問題。 –

回答

1

float本身沒有特定的精度。這是一個浮點數,特別是一個IEEE-754 32位二進制浮點數。

重新您的println問題,它不是println,它是如何將float轉換爲String。這是通過的JavaDoc爲Float.toString(float)覆蓋:

多少位必須被打印的一個小數部分?必須至少有一位數字來表示小數部分,並且除此之外還需要多達數量的位數,以便將參數值與類型爲float的相鄰值進行唯一區分。也就是說,假設x是由該方法對有限非零參數產生的十進制表示法所表示的精確數學值,其值爲f。然後f必須是最接近xfloat值;或者,如果兩個浮點值都同樣接近X,然後˚F必須是他們中的一個和˚F的有效數字的最低顯著位必須爲0

或者換另一種方式,默認String只有必要的位數,如果你把這String和轉換回float,你會得到相同的float值。