#java #implicit-conversion
#java #неявное преобразование
Вопрос:
Допустим, я преобразовал double x в int, что может быть выполнено автоматически путем усечения. Будет ли это по-прежнему считаться неявным преобразованием? Является ли неявное преобразование невозможным перевести фактическое значение из одного типа в другой тип без потери точности этого значения. В этом случае я бы не потерял десятичную часть до значения x? Я не смог найти ничего конкретного в документах java по этому поводу, поэтому я решил спросить здесь:
double x = 420.69;
int y = x;
Комментарии:
1. Это не неявное преобразование, это ошибка.
int y = x;
не будет компилироваться.2. В документации это описано в пункте 5.1.3 Сужение примитивного преобразования . Такое преобразование возможно благодаря явному приведению более широкого типа к более узкому .
3. Неявное преобразование противоположно явному преобразованию. Явное преобразование использует правила приведения, поэтому
int y = (int)x;
будет явным. В неявном преобразовании отсутствует приведение, что означает, что программист мог допустить ошибку.
Ответ №1:
Это не неявное преобразование, и это приведет к ошибке компилятора.
double x = 420.69;
int y = x;
Поскольку double — это больший тип данных, чем int, его необходимо уменьшить.
double x = 420.69;
int y = (int)x;
Однако все цифры после десятичной дроби будут потеряны.