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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
#1

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

21.11.2013, 23:15. Просмотров 690. Ответов 6
Метки нет (Все метки)

Объясните нубу пожалуйста, почему выкидывает это предупреждение ?
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
Посмотрите здесь:

Почему выскакивает Warning "signed/unsigned mismatch"? C++
Warning C4700: использована неинициализированная локальная переменная "matrix" C++
Отключение предупреждений без "pragma warning" C++
Почему в выводе выдаются предупреждения "warning C4101: sm: неиспользованная локальная переменная" C++
C++ Необъявленный идентификатор, преобразование "int" в "float"
C++ Предупреждение 2 warning LNK4075: не учитывается "/INCREMENTAL"
Ошибка "Невозможно преобразовать аргумент 1 из "double" в "double *" 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
Еще ссылки по теме:

Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] C++
C++ C2440 "Невозможно преобразовать double в double"
C++ Ошибка усечение из "double" к "float"
усечение из "double" к "float C++
Как исправить: warning C4700: использована неинициализированная локальная переменная "a"? 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
Ответ Создать тему
Опции темы

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