【发布时间】:2016-07-14 17:06:44
【问题描述】:
我试图从double 中删除fractional 部分,以防它是整个使用:
(d % 1) == 0 ? d.intValue() : d
遇到了以下我不理解的行为:
public static void main(String[] args) {
Double d = 5D;
System.out.println((d % 1) == 0); // true
System.out.println((d % 1) == 0 ? d.intValue() : "not whole"); // 5
System.out.println((d % 1) == 0 ? d.intValue() : d); // 5.0
}
正如您在第三行中看到的那样,即使满足 (d % 1) == 0 条件,操作员也会选择 else 值 - 5.0。
这是怎么回事?
【问题讨论】:
-
在这两种情况下都选择
d.intValue(),它只是执行转换以确保第二个和第三个参数具有相同的类型。 -
可能被视为 stackoverflow.com/questions/8002603/… 的副本(及其所有副本)...
-
@Marco13,我在发布问题时不知道投射是问题。事后看来,这可能是重复的..
-
您正在尝试从
double中删除小数部分。
标签: java double ternary-operator