преобразование из 'double' в 'float' требует сужающего преобразования - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующие строки кода:

std::vector<float> qualities = { 0.5, 0.6, 0.7, 0.8 };
std::vector<float> percentages = { 0.15, 0.16, 0.17, 0.18 };

Я получаю ошибку, указанную в заголовке для каждого элемента. Почему?

Ответы [ 2 ]

5 голосов
/ 04 августа 2020

Вы получили сообщение, потому что константа вида (например) 0.5 - это double, а присвоение double float является сужающим преобразованием.

Чтобы исправить это , добавьте f к каждой из ваших констант, например 0.5f.

2 голосов
/ 04 августа 2020

преобразование из double в float требует сужающего преобразования

Я получаю ошибку, указанную в заголовке для каждого элемента. Почему?

Потому что вы строите вектор чисел с плавающей запятой, используя двойные литералы. Такое преобразование сужается.

Тем не менее, такие преобразования разрешены в этом контексте, и пример сформирован правильно и должен компилироваться. Я подозреваю, что вы использовали некоторые параметры компилятора, чтобы попросить компилятор не компилировать некоторые правильно сформированные программы.

Вы можете написать литерал с плавающей запятой, добавив f к двойному литералу.

...