黑马程序员技术交流社区
标题:
数据比较的一点不解
[打印本页]
作者:
于洋洋
时间:
2011-8-1 10:11
标题:
数据比较的一点不解
double i=0.0/0.0;
if(i==i){
System.out.println(true);
}
else{
System.out.println(false);
}
复制代码
结果竟然是false,有点不解,这究竟是为什么?
作者:
李龙
时间:
2011-8-1 12:10
如果你
System.out.println(i);
复制代码
会发现输出结果为NaN
这是java一种特殊的浮点类型的数值,是一个不确定数,用于处理java编译时出现的错误情况的
NaN 是不与任何值相等的,包括其本身。
[
本帖最后由 李龙 于 2011-08-01 12:13 编辑
]
作者:
匿名
时间:
2011-8-1 12:28
除数是不能为0的,再有计算机表示浮点数精度有限,比较浮点数只能是近似等于。可以这样判断一个浮点变量是否为零:
const float EPSILON = 0.000001;//根据需要调整精度
float x;
…
if((x >= -EPSILON) && (x <= EPSILON)) {//x为零
}
else{
}
作者:
匿名
时间:
2011-8-1 19:19
浮点型的0.0并不是0,是一个无穷小量,所以0.0/0.0并不会报被0除异常,就像李龙说的结果是一个不确定的数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2