Я только что узнал из сообщения Питера Лоури , что это допустимое выражение, которое оценивается как true
.
333333333333333.33d == 333333333333333.3d
У меня вопрос, почему разрешено иметь двойные литералы, которые не могут быть представлены в двойном формате, в то время как целочисленные литералы, которые не могут быть представлены, запрещены. Каково обоснование этого решения.
Замечание: я могу на самом деле вызвать ошибку компиляции вне допустимого диапазона для литералов типа double: -)
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999d
Итак, пока мы находятся в диапазоне (min, max), литерал приближается, но при выходе за его пределы кажется, что компилятор отказывается аппроксимировать его.