黑马程序员技术交流社区

标题: 基本数据类型double问题~~ [打印本页]

作者: 泡沫__opt    时间: 2014-10-19 14:26
标题: 基本数据类型double问题~~
class Demo{
        public static void main(Sting[] args){
                double x = 4-(4/3);
                System.out.println(x);
        }
}
为啥结果是3.0呢?
double不是精确到小数点后么?意思无限小数也四舍五入?
作者: 泡沫__opt    时间: 2014-10-19 14:28
还有如果java里会自动甄别运算么?比如double x = 4 - 4/3,如果不加括弧会先算除法么?
作者: 颜仔    时间: 2014-10-19 14:32
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。
作者: 颜仔    时间: 2014-10-19 14:33
泡沫__opt 发表于 2014-10-19 14:28
还有如果java里会自动甄别运算么?比如double x = 4 - 4/3,如果不加括弧会先算除法么? ...

会的 运算有个优先级的问题。
作者: yueyazhishang    时间: 2014-10-19 18:40
首先  4/3=1;4-1=3;double型的3不就是3.0? 楼主怎么想的?
作者: 泡沫__opt    时间: 2014-10-20 09:46
yueyazhishang 发表于 2014-10-19 18:40
首先  4/3=1;4-1=3;double型的3不就是3.0? 楼主怎么想的?

额……谢谢谢谢~~脑残了……
作者: 泡沫__opt    时间: 2014-10-20 09:47
颜仔 发表于 2014-10-19 14:32
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。 ...

是我想多了……谢谢回答~~
作者: ll_shitou    时间: 2014-10-20 10:19
后面的4与3都是int型,4/3系统处理结果就是1,所以结果是3,但是你又把它赋值给了double,所以就是3.0
作者: yueyazhishang    时间: 2014-10-20 11:11
泡沫__opt 发表于 2014-10-20 09:46
额……谢谢谢谢~~脑残了……

我也觉得是,嘿嘿。
作者: 泡沫__opt    时间: 2014-10-20 11:31
ll_shitou 发表于 2014-10-20 10:19
后面的4与3都是int型,4/3系统处理结果就是1,所以结果是3,但是你又把它赋值给了double,所以就是3.0 ...

额……谢谢~~搞明白了~~
作者: sugar    时间: 2014-10-21 22:27
4/3=1;4.0/3=1.333333333...
作者: maralbertlee    时间: 2014-10-24 10:23
颜仔 发表于 2014-10-19 14:32
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。 ...

咦?是运算完才提升的吗?我记得是运算都是以double运算的,完了需要转回的才进行强转。




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