黑马程序员技术交流社区

标题: 请指教 [打印本页]

作者: 林康春    时间: 2012-6-26 23:29
标题: 请指教
本帖最后由 林康春 于 2012-6-27 21:33 编辑

class  jiShu
{
        public static void main(String[] args)
        {   
                int a=1;
                int b=3;
                double c=a/b;
                System.out.println(c);//结果是0.0

        }
}
//为什么不是0.3333333333333333?


作者: 韦念欣    时间: 2012-6-26 23:30
本帖最后由 韦念欣 于 2012-6-26 23:47 编辑

因为a和b是整形,1/3得到的整数就是0
0被double接收后,输出就是0.0
作者: 谭立文    时间: 2012-6-26 23:36
int 型 变量   + - * /  int 型变量 其结果为int型变量     

作者: 王涛    时间: 2012-6-26 23:37
应为a和b都是int型数据
c = a/b开始也是int型的,值是0
然后声明为double型,然后就转换成了double型的了,也就是0.0
作者: 张华廷    时间: 2012-6-26 23:40
public class fdsdfs {
        public static void main(String[] args)
    {   
            int a=6;
            int b=5;
            double c=a/b;
            System.out.println(c);//结果是1.0


public class fdsdfs {
        public static void main(String[] args)
    {   
            int a=6;
            int b=5;
          int c=a/b;
            System.out.println(c);//结果是1

    }
//int类型  /  int类型  结果强制转换double类型


}


    }


}
作者: 封明川    时间: 2012-6-26 23:48
class  jiShu
{
        public static void main(String[] args)
        {   
                int a=1;
                int b=3;
                double c=a/b;  //会先计算a/b得到一个整型的结果,
                                     //然后再赋值给c,c是double类型,所以是0.0

                System.out.println(c);//结果是0.0

        }
}

作者: 吴林军    时间: 2012-6-27 00:09
class  jiShu
{
        public static void main(String[] args)
        {   
                int a=1;   //a为整形常量
                int b=3;   //b为整形常量
                double c=a/b;   //a/b运算是整形除以整形,结果还是整形。即a/b=0。然后把0赋值给double型的c。
                                      //若要结果输出0.3333333333333333需要把a,b进行强制类型转换后才能进行预算。
                System.out.println(c);
        }
}

作者: 吴扬    时间: 2012-6-27 00:53
因为a和b都是整型数据啊,a/b由于是取整,即1/3之后取整是0,然后int类型的0又被赋给双精度double的b,数据类型会自动向上提升,所以输出结果是0.0
作者: 林康春    时间: 2012-6-27 21:33
韦念欣 发表于 2012-6-26 23:30
因为a和b是整形,1/3得到的整数就是0
0被double接收后,输出就是0.0

右边的输出都是整形的 左边为double型吗
我刚回来,第一时间回你了
作者: 韦念欣    时间: 2012-6-27 22:31
林康春 发表于 2012-6-27 21:33
右边的输出都是整形的 左边为double型吗
我刚回来,第一时间回你了

double c=a/b;
这个代码中,c虽然是double的,但是a/b的结果是int的,a/b的结果是0,即1/3的结果取整后为0。
0赋值给c,那么c也就等于0,又因为c是double的,所以JAVA输出的时候就带上小数点,所以结果为0.0




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