2014-02-19 253 views
-1

使用8字節和浮點數也使用8字節。但float可以代表的所有值,並且具有比更寬的範圍。 那麼,爲什麼我們需要型?爲什麼我們需要長型?

+2

它的精確度的問題。 –

+1

Float不能*完全*代表long的所有值。 – Blorgbeard

+0

爲什麼投票-1爲我的文章 - - ! – happyWinner

回答

0

考慮一個事實,正如您所指出的那樣,long和float都是8個字節長。這意味着它們可以表示完全相同的數值 - 即2^64個不同的值。

正如你所說的,float可以表示比long類型更廣泛的值。因此,浮動一定不能代表沿該範圍的每個值。浮點數是一個近似值。

例如,long可能能夠表示100,101和102,而float可能只能表示100和102.這些僅僅是示例,但這個概念是成立的 - 浮點數不能完全代表每個值的範圍。

這兩種數據類型被「解釋」不同。如果它是一個長整型,那麼「00110101」位將轉換爲一個數字,如果它是一個浮點數,則轉換爲完全不同的數字。

您可以閱讀多頭的全部細節,並漂浮在Java語言規範:

整數類型:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1

浮點類型:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3

+0

非常感謝。 – happyWinner

+0

但101等於1.100101 *(2^6)二進制。我想101可以用float來表示嗎? – happyWinner

+0

我明白了。例如,如果float的壓裂部分是4位,那麼float就不能代表1000001.是不是? – happyWinner