Форум программистов, компьютерный форум CyberForum.ru

warning C4244: =: преобразование "double" в "float - C++

Восстановить пароль Регистрация
 
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
21.11.2013, 23:15     warning C4244: =: преобразование "double" в "float #1
Объясните нубу пожалуйста, почему выкидывает это предупреждение ?
warning C4244: =: преобразование "double" в "float", возможна потеря данных
Как исправить ?
MSVC++ 2010

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
float trArea (int fa, int fb){
    float fS;
    fS = fa*fb/2.0;
    return fS;
}
 
int main() {
    float S;
    S = trArea(5,4); 
 
    cout << "Area of the triangle is equal to " << S << endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 23:15     warning C4244: =: преобразование "double" в "float
Посмотрите здесь:

C++ Error: значение типа "const char" нельзя присвоить сущности типа "double"
warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
C++ необъявленный идентификатор,преобразование "int" в "float"
Warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
21.11.2013, 23:43     warning C4244: =: преобразование "double" в "float #2
C++
1
fS = (float)(fa*fb/2.0);
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
21.11.2013, 23:45  [ТС]     warning C4244: =: преобразование "double" в "float #3
Так это вроде устаревший и не совсем корректный способ ?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
22.11.2013, 03:09     warning C4244: =: преобразование "double" в "float #4
Цитата Сообщение от levent Посмотреть сообщение
2.0
потому что это double
2.0f - это float
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
22.11.2013, 16:17  [ТС]     warning C4244: =: преобразование "double" в "float #5
Цитата Сообщение от I.M. Посмотреть сообщение
потому что это double
2.0f - это float
Понятно.Спасибо.
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
22.11.2013, 16:30     warning C4244: =: преобразование "double" в "float #6
преобразование "double" в "float", возможна потеря данных
потому что sizeof(float) < sizeof(double), поэтому и происходит такое предупреждение.
Цитата Сообщение от levent Посмотреть сообщение
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
нужно просто выбирать типы данных, которые лучше подходят под задачу которую вы решаете.
например функцию float trArea (int fa, int fb) объявить как float trArea (float fa, float fb)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 18:18     warning C4244: =: преобразование "double" в "float
Еще ссылки по теме:

Ошибка "Невозможно преобразовать аргумент 1 из "double" в "double *" C++
Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] C++
"Чудеса типа float" или "Куда девалась информация?" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
22.11.2013, 18:18     warning C4244: =: преобразование "double" в "float #7
Цитата Сообщение от levent Посмотреть сообщение
Понятно.Спасибо.
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
Эм, что?
если вопрос о подобных преобразованиях, то да, такие правила есть
ищем по запросу "ISO 14882:2011" и там целая глава о преобразовании типов. Глава 4. Можно читать не все пункты, а только те, которые касаются float

Добавлено через 1 час 42 минуты
http://isocpp.org/files/papers/N3690.pdf
Yandex
Объявления
22.11.2013, 18:18     warning C4244: =: преобразование "double" в "float
Ответ Создать тему
Опции темы

Текущее время: 22:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru