日期:2014-05-20  浏览次数:20620 次

java中的浮点类型??
我刚刚从C++转过来,有一个问题想请教一下。

在java中,为什么下面语句无法通过编译:
double   d   =   3.4;
float   f   =   (double)d;
编译失败“cannot   convert   from   double   to   float”。
这是为什么呢?我已经使用“显式转换”了阿?(又如:long   l   =   33333333333l;   short   s   =   (short)l;   此处进行显式的“窄化转换”是可以成功的,为什么上面那个浮点类型转换不能成功呢?)

又类似的:
float   f   =   (double)4.5;
也是同样的失败理由。

我不明白其中缘由,请高手执教,谢谢。

------解决方案--------------------
汗,写也应该写成
float f = (float)d;啊,我想在C++里也是一样的吧
------解决方案--------------------
float f = (double)d;

你把一个double 赋给一个float 肯定会报异常


必须显示的转化

float f = 3.5 ; //错误
float f = (float)3.5;
------解决方案--------------------
4.5本来就是float


/////////////////////////

我记得这种数默认就是double


float f = 4.5 不报错吗
------解决方案--------------------
WHW1984(任逍遥)
float类型的长度比double类型的长度短
java的规则是短的类型可以向长的类型转化,但是不建议长的转化为短的
----------------------------
说的很对

float f = 4.5 不会报错的
规范的写法是
float f = 4.5f;


------解决方案--------------------
interpb(曾曾胡,深怕情多累美人!)
刚没试,
float f = 4.5 会报错的,编译器通不过,编译器,不知道4.5是float还是double类型的
对不起,
误导了楼上的兄弟