【发布时间】:2014-08-11 14:10:47
【问题描述】:
为什么在下面的例子中条件运算符返回 2.0 而 if/else 块返回 2?我有点困惑,因为这两个块应该相等:
如果/否则:
double value = 2.0;
Object result;
if (value == Math.floor(value)) {
result = ((int) value);
} else {
result = value;
}
条件运算符:
double value = 2.0;
Object result;
result = value == Math.floor(value) ? ((int) value) : value;
但是,命令
System.out.println(result);
打印 2.0 或 2
感谢您的帮助!
【问题讨论】:
-
您依靠自动装箱将整数或双精度数转换为对象。如果您想确保获得正确的对象,请自己使用
new Integer((int)value)和new Double(value)制作它们。 -
谢谢,但是 new Integer(value) 和 (Integer)(int) value 都不会使条件运算符返回 2 但总是 2.0
标签: java if-statement operator-keyword