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类型的
对不起,
误导了楼上的兄弟