2014-02-19 52 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