昨晚在牛客APP上做JAVA题库,见到一题目很有新意,便对该问题和答案做了检验。
原题是这样的:
下列代码执行的结果应该是什么?
public class ZeroTest {
public static void main(String[] args) {
double x = -0.5d;
System.out.println(Math.floor(x));
System.out.println(Math.ceil(x));
x = Math.ceil(x);
System.out.println(x==0.0);
}
}
在MyEclipse运行下的正确答案是
-1.0
-0.0
true
头一次见到原来还能出现-0.0这样的数据,并且-0.0与0.0是完全一样的数据,只是形式上不同,于是我又做了延伸的探索。
double x = -0.5d;
System.out.println((int)x);
System.out.println((char)x);
System.out.println((float)x);
System.out.println((long)x);
System.out.println(Math.ceil((float)x));
0
-0.5
0
-0.0
发现-0.0只存在于单双精度型,而不存在于整型或字符型(字符型甚至无法显示),这种题对于实际应用并无影响,只是在企业招聘笔试上会出现类似的陷阱来考察,望各位能吸取教训。
最后
以上就是端庄大白最近收集整理的关于对double类型中存在-0.0的数据检验的全部内容,更多相关对double类型中存在-0.0内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复