为什么当我使用float时,java迫使我添加f?

问题描述:

我对编程非常陌生。我有以下代码:为什么当我使用float时,java迫使我添加f?

float f = 18.45f; 

这工作正常。如果我更改到:

float f = 18.45; 

java的说这是错误:

error: possible loss of precision 

但其在double方面可选。但在long我再次面临同样的问题。

为什么java强迫我这样做,但不是double

+1

'double'是浮点数的默认类型。 '18.45'隐含地是一个'double' – toniedzwiedz 2013-02-24 17:01:46

+0

更大的问题是,为什么当double更好时,甚至使用float,因为它更精确(Java正在警告你)?唯一一次我使用浮点数的时候,一个方法参数需要float才能正确的重载。 – 2013-02-24 17:02:23

+2

这是为了让人们不会经常来Stack Overflow来问为什么浮点乘法在Java中被破坏。 – 2013-02-24 17:03:35

在Java中,18.45是一个double数据类型,其中包含64位。数据类型只能保存到32位数据类型float。增加额外的f使它成为一个浮点数(浮点数字)。

有关更多详细信息,请参见Primitive Data Types

+2

+1超级音速的正确答案。 :) – 2013-02-24 17:03:23

+0

谢谢大家,为了赞成票:) – 2013-02-24 17:08:24

+4

真正令人惊讶的不是回票的数量,而是这是唯一的答案。我的意思是,有什么可能?它通常需要一打相同的帖子来回答这样的问题。 – toniedzwiedz 2013-02-24 17:12:24