A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

好一个明天

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

新手求指教,怎样设置才能结果为4.2啊,视频里也没讲解。

int x=4200;

x=(float)(x/1000);

System.out.println(x);

错误: 不兼容的类型: 从float转换到int可能会有损失
       x=(float)(x/1000);
         ^

21 个回复

倒序浏览
来大神指教啊,自己琢磨不透
回复 使用道具 举报
  1.                                 int x = 4200;
  2.                                 float y = x / 1000.0;
  3.                                 System.out.println(y);
复制代码


你的变量x是整型就只能接收整型或能强转为整型的值

而输出小数点后面的数, 你将被除数多个小数就好了 . 因为int的范围比float小,不用显式转换
回复 使用道具 举报 1 0
byte short char int  float double
回复 使用道具 举报
给某个强转为float
回复 使用道具 举报
湛原 发表于 2015-12-9 20:57
你的变量x是整型就只能接收整型或能强转为整型的值

而输出小数点后面的数, 你将被除数多个小数就好了 .  ...

错误: 不兼容的类型: 从double转换到float可能会有损失
               float y = x / 1000.0;
                           ^
还是不行啊
回复 使用道具 举报

前辈写下代码啊
回复 使用道具 举报

把某一个转成float结果就是float
回复 使用道具 举报
大哥呀,你x=(float)(x/1000);这句话有问题,float y = (float)(x/1000);才行
回复 使用道具 举报
强制类型转换就可以了
回复 使用道具 举报
int x=4200;

x=(float)(x/1000);
^            ^
這兩個x是同一個變量,因為已經將x聲明成int類型了,所以會報錯

必須在聲明一個float類型的變量賦值才可以
回复 使用道具 举报
class Test{
        public static void main(String[] args){
                int x = 4200;
                System.out.println(x/1000d);//这里将1000后面跟f和d都行。
        }
}

点评

当byte、short、char,int这四个数据类型进行+-*/时,都会转换成int类型;接下来转换类型依次为long、float、 double  发表于 2015-12-11 22:39
回复 使用道具 举报
小妖精 发表于 2015-12-11 14:05
强制类型转换就可以了

这个强制类型转换可以,不会报错,但是算不出来作者要求的4.2
回复 使用道具 举报
这里大神很多呢,学习了
回复 使用道具 举报
马赛 中级黑马 2015-12-11 23:09:00
15#
没有强制类型转换,float  x=(float)(x/1000);
回复 使用道具 举报
接收的 数据类型不对
回复 使用道具 举报
anuo 中级黑马 2015-12-12 16:25:36
17#
强转啊,加个强转符试试吧
回复 使用道具 举报
五楼说的对,把第二行的4200强转为float就行了
public class MyTest1 {
        public static void main(String[]args){

                float x=(float)4200;

                x=(float)(x/1000);

                System.out.println(x);
        }
}

回复 使用道具 举报
好一个明天 发表于 2015-12-9 22:02
错误: 不兼容的类型: 从double转换到float可能会有损失
               float y = x / 1000.0;
         ...

整数默认的是int型,而小数默认的是double型;1000.0默认的是double型,x/1000.0还是double型,double的取值范围比float高,将其赋值给float型的肯定不行。
可以改为 double y=x/1000.0;
回复 使用道具 举报
谢谢,已经会了,需要把除数强转为float类型,

int x=4200;

float y =  x / (float) (1000);

System.out.print(y);

或者

int x=4200;

float y = (float) x / (float) 1000;

System.out.print(y);
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马