就像標題所說,我不明白Java的原始數據類型long
最大值和最小值是如何小於float
的最大值和最小值。儘管long
是64位,而float
是32位。怎麼java延長MAX_VALUE <JAVA浮動MAX_VALUE儘管是64位與32位
這是怎麼回事?
就像標題所說,我不明白Java的原始數據類型long
最大值和最小值是如何小於float
的最大值和最小值。儘管long
是64位,而float
是32位。怎麼java延長MAX_VALUE <JAVA浮動MAX_VALUE儘管是64位與32位
這是怎麼回事?
原因是因爲float使用浮點精度。一個Long可以存儲大量的精確數字,而I float可以存儲一個較高的值,但是它的較低位中沒有相同的精度。
從某種意義上講,浮點數以科學/指數表示法存儲值。因此可以將較大的值存儲在少量的位中。認爲2 x10^200,這是個龐大的數字,但可以存儲在少量的位中。
一個32位的float
不只是一個簡單的數字,就像一個long
;它被分解成田地。字段爲:
指數字段被編碼(通常,它只是從真實指數的偏移量),但它代表從-126到127的指數(即覆蓋可能的256個值的254;另外兩個用於特殊目的)。尾數表示值可以從1到一個剛好低於2的值(實際上是2 - 2 -23)。這意味着,最大的可能是 X(2 - 2 -23),或幾乎2 ,這是比最大可能long
值,它是2 -1大。
的更多信息:
看看[此](https://stackoverflow.com/questions/15004944/max-value-of-integer)。這不是一個直接的答案,但它包含了確切的解釋。 – campovski