Я пытался удалить часть fractional
из double
, если она целая, используя:
(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
}
Как вы можете видеть на третьей строке, оператор выбирает значение else
- 5.0
, даже если выполнено условие (d % 1) == 0
.
Что здесь происходит?