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不行。

7个回答

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会自动转换

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐