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