Integer -> double распаковывает, но Double -> int не распаковывает. Почему? ⇐ JAVA
Integer -> double распаковывает, но Double -> int не распаковывает. Почему?
Это преобразование Integer -> double компилируется без ошибок
double d = Integer.valueOf(1); Это означает, что происходит следующее:
[*]Integer распаковывается в int [*]значение int подвергается расширяющему примитивному преобразованию из int -> double
Integer распакован. Распакованное значение затем расширяется. Это дает то же поведение, что и int -> double
Создается предположение, что Double -> int также распакуется, давая то же поведение, что и double -> int
Для кода
int i = Double.valueOf(1); Я ожидал появления сообщения об ошибке
преобразование с потерями из double в int
Предполагая, что Double распаковывается, мы должны наблюдать то же поведение, что и double -> int
Вместо этого мы получаем ошибку ввода
Невозможно преобразовать Double в int
Каково объяснение такого поведения?
Почему распаковка происходит между Integer -> double, но не происходит между Double -> int?
Почему они совпадают:
[*]Целое -> двойное [*]int -> double
Но это не так:
[*]Double -> int [*]double -> int
Это преобразование Integer -> double компилируется без ошибок
double d = Integer.valueOf(1); Это означает, что происходит следующее:
[*]Integer распаковывается в int [*]значение int подвергается расширяющему примитивному преобразованию из int -> double
Integer распакован. Распакованное значение затем расширяется. Это дает то же поведение, что и int -> double
Создается предположение, что Double -> int также распакуется, давая то же поведение, что и double -> int
Для кода
int i = Double.valueOf(1); Я ожидал появления сообщения об ошибке
преобразование с потерями из double в int
Предполагая, что Double распаковывается, мы должны наблюдать то же поведение, что и double -> int
Вместо этого мы получаем ошибку ввода
Невозможно преобразовать Double в int
Каково объяснение такого поведения?
Почему распаковка происходит между Integer -> double, но не происходит между Double -> int?
Почему они совпадают:
[*]Целое -> двойное [*]int -> double
Но это не так:
[*]Double -> int [*]double -> int
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 289 Просмотры
-
Последнее сообщение Anonymous
-