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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马蒙蒙 黑马帝   /  2011-7-29 16:22  /  2274 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下代码:
int i = 3;
int j = 0;
float k = 3.2F;
long m = -3;
if (Math.ceil(i) < Math.floor(k))
if (Math.abs(i) == m)
System.out.println(i);
else
System.out.println(j);
else
System.out.println(Math.abs(m) + 1);怎么结果是4呢?麻烦高手相助

3 个回复

倒序浏览
黑马网友  发表于 2011-7-29 18:39:27
沙发
if (Math.ceil(i) < Math.floor(k))
Math.cell(i)取得的是double类型的最大整数为3.0
Math.floor(k)取得的是double类型的最小整数为3.0
if (Math.abs(i) == m)
Math.abs(i)为取绝对值为3
俩个if语句均不成立,所以执行第三条输出语句,得出结果为4

遇到不会的类似的问题可以查API
回复 使用道具 举报
黑马网友  发表于 2011-7-29 20:52:36
藤椅
Math.ceil(i) 等于 Math.floor(k)
直接执行对应的else  System.out.println(Math.abs(m) + 1);
所以是4

这问题调式最方便了,要不就System.out.println()所有的数,或者看看api对Math的解释。
回复 使用道具 举报
黑马网友  发表于 2011-7-30 10:53:08
板凳

回复 楼主 的帖子

Math.ceil(i) 的意思是以负无穷方向取不小于i的最小值,此处就是3了
Math.floor(k) 的意思是以正无穷方向取不超过k的最大值,此处也为3了
只执行了这句:System.out.println(Math.abs(m) + 1);,所以结果是4
就象李龙说的,你加个System.out.println(Math.ceil(i))也就很好发现的,要会用方法测试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马