java定义float a = 1和float a = 1f什么区别?

如题所述

float a = 1;这里的1是整形,当赋值给一个float时,存在一个隐式转换,不损失精度。
float a = 1f;1f就是float类型的。

如果你这样定义 f
loat f = 1.0;
肯定会出错。 因为1.0默认是double类型的。double范围比float大。为了不损失精度,不会自动转换。这是必须这样写
float f = 1.0f;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-26
一般一个数如果没有加什么的是默认int类型,然后回自动转换成float。
而后面加f表示这个是一个float数,
一个小数默认是double,而那时候你赋值给float就不行了,必须加这个了,好像是这个只能往大范围转换,小范围转换就需要辅助的
第2个回答  2013-06-26
不加f会出错,不能把int赋给float追问

可以的

第3个回答  2018-03-02
1.存在自动类型转换和强制转换的问题:
当把一个表数范围小的数值或者变量直接赋值给另一个表数值范围大的变量时,可以进行自动类型转换,反之要进行强制转换。
表述范围从小到大排序:byte,short,int,long,float,double.
以上从左到右可以自动转换,从右到左必须强制转换。
2.默认情况下整数为int,浮点数为double。
因此float a=1自动转换,不报错;
float a=1.0报错,需要强制转换,可改为float a=(float)1.0;
或者写成float a=1.0f,系统会自动分配一个四位空间而不是八位,给出一个float类型的a而不需要进行强制转换。
相似回答