问题描述
- Eclipse环境下编写Java程序,使用float类型的数据为什么无法进行算数运算?
-
float f=5+5.5;
或者
float f ;
f= 1*5.5;
这两个均会报错,我就纳闷了。为什么这样不行?后来我又试了:
int a= 5;
float f ;
f= a*5.5;
还是不行,报错的语句就是给f赋值的语句。
请问为什么?C++下亲测这三者均可运行,难道这是Java的特性吗?不可能啊,如果这种操作都会编译报错,那这float基本上就没用处了,这太不科学了。
为了避免一些网友试都没试就直接说是类型转换的问题,我又试了下
f= (float)(5.5*5.5);
还是报错。
int f=5*5;
这个是没问题的,就只float不行。
解决方案
5.5是double类型,高转低得强转,或写成5.5f或(float)5.5
解决方案二:
无论是C++还是Java,整数参与乘除都会被当作整乘整除。必须强制转换。
你说C++可以,应该是你记错了。
解决方案三:
5.5是double型
从double转换到float可能会有损失,所以报错
这样就好了: float f = 5*(float)5.5
解决方案四:
因为1是int类型 5.5是默认是double类型的。1*5.5自然是double类型,不能将精度高的赋值给精度低的,将f类型改为double就行!
下面的也是这个问题
解决方案五:
正确写法在5.5后面价格f。
解决方案六:
你 的5.5都是double类型,类型转换无法double到flaot(由高到低),必须强转写成5.5f或(float)5.5。而5是int,类型是可以自动转换的int到float(有低到高)
解决方案七:
float这个类型的在数据后面要再加个f 不然默认为double类型的
float f;
double b;
b=1*5.5;
这样子就是可以的_
因为double转成float要强制转换而float转double会自动转换