为什么我需要投下一个花车或放一个' f'后缀,而长期没有?
为什么浮点数的默认数据类型是double而不是float?
例如:
float foo = 0.5; //compilation error
float foo = 0.5f; //works
float foo = (float)0.5; //works
而
long bar = 10; //works
为什么Java以这种方式设计?
答案 0 :(得分:2)
第一个不起作用,因为double(0.5
是双字面值)更宽而不是float:它有更多的数据位,所以赋值需要抛出离开一些数据。您可以明确地投射它,但您必须明确表示您打算通过(float)
强制转换丢失额外数据。
最后一个有效,因为10
是一个int文字,而int 更窄比长:它有更少的数据位,所以你可以将一个int分配给long而不会丢失数据