Почему сохранение литерального значения, являющегося целым числом в природе, в типе данных Float в java без 'f' в конце не дает ошибки? - PullRequest
0 голосов
/ 11 апреля 2020
float firstFloatValue = 5;

float secondFloatValue = 2.5;

Почему первая переменная без f в конце не выдает ошибку, а вторая - нет? Я знаю, что если мы не ставим f в конце литерала, он считается двойным. Но почему нет ошибки при инициализации первой переменной на 5 без f в конце. Пожалуйста, помогите мне, я очень плохо знаком с Java.

Сообщение об ошибке:

Main.java:12: error: incompatible types: possible lossy conversion from double to float
        float secondFloatValue = 2.5;

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Вы не включили сообщение об ошибке (ВСЕГДА включайте сообщение об ошибке в StackOverflow).

Без суффикса типа f (как в 2.5f) литерал 2.5 интерпретируется как double, который не помещается в переменную float.

0 голосов
/ 11 апреля 2020

Из-за приведения типа firstFloatValue в примере int приводится тип, приведенный к поведению по умолчанию (типы данных из небольшой памяти в типы данных более высокой памяти). Но во второй двойной не может быть типа приведен к плаванию

...