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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 泡沫__opt 中级黑马   /  2014-10-19 14:26  /  1812 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo{
        public static void main(Sting[] args){
                double x = 4-(4/3);
                System.out.println(x);
        }
}
为啥结果是3.0呢?
double不是精确到小数点后么?意思无限小数也四舍五入?

11 个回复

倒序浏览
还有如果java里会自动甄别运算么?比如double x = 4 - 4/3,如果不加括弧会先算除法么?
回复 使用道具 举报
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。
回复 使用道具 举报
泡沫__opt 发表于 2014-10-19 14:28
还有如果java里会自动甄别运算么?比如double x = 4 - 4/3,如果不加括弧会先算除法么? ...

会的 运算有个优先级的问题。
回复 使用道具 举报 1 0
首先  4/3=1;4-1=3;double型的3不就是3.0? 楼主怎么想的?
回复 使用道具 举报
yueyazhishang 发表于 2014-10-19 18:40
首先  4/3=1;4-1=3;double型的3不就是3.0? 楼主怎么想的?

额……谢谢谢谢~~脑残了……
回复 使用道具 举报
颜仔 发表于 2014-10-19 14:32
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。 ...

是我想多了……谢谢回答~~
回复 使用道具 举报
后面的4与3都是int型,4/3系统处理结果就是1,所以结果是3,但是你又把它赋值给了double,所以就是3.0
回复 使用道具 举报
泡沫__opt 发表于 2014-10-20 09:46
额……谢谢谢谢~~脑残了……

我也觉得是,嘿嘿。
回复 使用道具 举报
ll_shitou 发表于 2014-10-20 10:19
后面的4与3都是int型,4/3系统处理结果就是1,所以结果是3,但是你又把它赋值给了double,所以就是3.0 ...

额……谢谢~~搞明白了~~
回复 使用道具 举报
sugar 中级黑马 2014-10-21 22:27:34
11#
4/3=1;4.0/3=1.333333333...
回复 使用道具 举报
颜仔 发表于 2014-10-19 14:32
你这个正确啊,等号右边是int型的,运算完后的结果再自动提升为double类型的。 ...

咦?是运算完才提升的吗?我记得是运算都是以double运算的,完了需要转回的才进行强转。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马