黑马程序员技术交流社区

标题: 新人求教:怎样设置int数值除后结果为float类型 [打印本页]

作者: 好一个明天    时间: 2015-12-9 19:53
标题: 新人求教:怎样设置int数值除后结果为float类型
新手求指教,怎样设置才能结果为4.2啊,视频里也没讲解。

int x=4200;

x=(float)(x/1000);

System.out.println(x);

错误: 不兼容的类型: 从float转换到int可能会有损失
       x=(float)(x/1000);
         ^
作者: 好一个明天    时间: 2015-12-9 20:08
来大神指教啊,自己琢磨不透
作者: 湛原    时间: 2015-12-9 20:57
  1.                                 int x = 4200;
  2.                                 float y = x / 1000.0;
  3.                                 System.out.println(y);
复制代码


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

而输出小数点后面的数, 你将被除数多个小数就好了 . 因为int的范围比float小,不用显式转换
作者: hyl    时间: 2015-12-9 21:52
byte short char int  float double
作者: 洋葱头头    时间: 2015-12-9 22:01
给某个强转为float
作者: 好一个明天    时间: 2015-12-9 22:02
湛原 发表于 2015-12-9 20:57
你的变量x是整型就只能接收整型或能强转为整型的值

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

错误: 不兼容的类型: 从double转换到float可能会有损失
               float y = x / 1000.0;
                           ^
还是不行啊
作者: 好一个明天    时间: 2015-12-9 22:03
洋葱头头 发表于 2015-12-9 22:01
给某个强转为float

前辈写下代码啊
作者: 洋葱头头    时间: 2015-12-9 22:10

把某一个转成float结果就是float

作者: 李永佳    时间: 2015-12-10 17:33
大哥呀,你x=(float)(x/1000);这句话有问题,float y = (float)(x/1000);才行
作者: 小妖精    时间: 2015-12-11 14:05
强制类型转换就可以了
作者: eddy1820    时间: 2015-12-11 16:51
int x=4200;

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

必須在聲明一個float類型的變量賦值才可以
作者: 刀郎去西藏    时间: 2015-12-11 22:30
class Test{
        public static void main(String[] args){
                int x = 4200;
                System.out.println(x/1000d);//这里将1000后面跟f和d都行。
        }
}
作者: 刀郎去西藏    时间: 2015-12-11 22:41
小妖精 发表于 2015-12-11 14:05
强制类型转换就可以了

这个强制类型转换可以,不会报错,但是算不出来作者要求的4.2
作者: pllaoyao    时间: 2015-12-11 23:03
这里大神很多呢,学习了
作者: 马赛    时间: 2015-12-11 23:09
没有强制类型转换,float  x=(float)(x/1000);
作者: 仙风道骨    时间: 2015-12-11 23:21
接收的 数据类型不对
作者: anuo    时间: 2015-12-12 16:25
强转啊,加个强转符试试吧
作者: zcbcba123    时间: 2015-12-12 16:59
五楼说的对,把第二行的4200强转为float就行了
public class MyTest1 {
        public static void main(String[]args){

                float x=(float)4200;

                x=(float)(x/1000);

                System.out.println(x);
        }
}


作者: ninety_奶挺    时间: 2015-12-12 19:15
好一个明天 发表于 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;
作者: 好一个明天    时间: 2015-12-17 22:23
谢谢,已经会了,需要把除数强转为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);
作者: luyang18    时间: 2015-12-22 23:38
19楼解析很清楚,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2