Java 10.5f和(浮动)10.5之间的差异

Java 10.5f和(浮动)10.5之间的差异,java,casting,double,primitive-types,Java,Casting,Double,Primitive Types,我试着做了以下几点: float a = 10.5; //compile error (required float, provided double) 这意味着默认的十进制数总是double,长度为64位,而float长度为32位。所以从技术上讲,我不能把大的东西放在一个小的“杯子”里 然后我做了一些修正,这两种方法都有效。我很好奇这两种方法之间有什么区别(如果有的话): float a = 10.5f; float a = (float)10.5; 这是将double转换为float或仅

我试着做了以下几点:

float a = 10.5;
//compile error (required float, provided double)
这意味着默认的十进制数总是
double
,长度为64位,而
float
长度为32位。所以从技术上讲,我不能把大的东西放在一个小的“杯子”里

然后我做了一些修正,这两种方法都有效。我很好奇这两种方法之间有什么区别(如果有的话):

float a = 10.5f;
float a = (float)10.5;

这是将double转换为float或仅声明float变量之间的区别。在本例中,最好将变量声明为浮点,因为强制转换文本没有什么意义。此外,将double转换为float时会丢失精度。

此处:
float a=10.5f
您明确声明变量a为包含浮点值的32位。在第二个示例中,您正在将
10.5
(默认情况下为双精度)转换为浮点,这意味着您这样做会失去精度。您看到答案了吗,也许它可以帮助您理解相同的内容。@kali有道理。还有一件事。为什么byte和short没有这样做的可能性?在那里我唯一能做的就是像
byte a=(byte)10000那样进行强制转换。做类似于
字节a=10000b
的事情是不可能的。@VivekJain它起到了帮助:)我不知道为什么,但这并不重要,因为你没有失去精度