Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 39
1

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

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

Author24 — интернет-сервис помощи студентам
Объясните нубу пожалуйста, почему выкидывает это предупреждение ?
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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2013, 23:15
Ответы с готовыми решениями:

Warning C4244: return: преобразование "double" в "float", возможна потеря данных
помогите разобраться. пишу программу в функции выдает ошибку в строке с return &quot;warning C4244:...

Warning C4244: =: преобразование "double" в "float", возможна потеря данных
Возникла проблема Решаю лабу, написал код, выдает ошибку (warning C4244: =: преобразование...

warning C4244: =: преобразование "double" в "float", возможна потеря данных
Вот код. Работало, теперь не работает. Не пойму в чём дело. #include&lt;iostream&gt;...

Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри]
В результате если ввести 3 5 6 9 11 (оно должно сложить 5+6+9 и разделить эту сумму на три) выдаёт...

6
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
21.11.2013, 23:43 2
C++
1
fS = (float)(fa*fb/2.0);
0
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 39
21.11.2013, 23:45  [ТС] 3
Так это вроде устаревший и не совсем корректный способ ?
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
22.11.2013, 03:09 4
Цитата Сообщение от levent Посмотреть сообщение
2.0
потому что это double
2.0f - это float
1
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 39
22.11.2013, 16:17  [ТС] 5
Цитата Сообщение от I.M. Посмотреть сообщение
потому что это double
2.0f - это float
Понятно.Спасибо.
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
0
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
22.11.2013, 16:30 6
преобразование "double" в "float", возможна потеря данных
потому что sizeof(float) < sizeof(double), поэтому и происходит такое предупреждение.
Цитата Сообщение от levent Посмотреть сообщение
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
нужно просто выбирать типы данных, которые лучше подходят под задачу которую вы решаете.
например функцию float trArea (int fa, int fb) объявить как float trArea (float fa, float fb)
1
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
22.11.2013, 18:18 7
Цитата Сообщение от levent Посмотреть сообщение
Понятно.Спасибо.
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
Эм, что?
если вопрос о подобных преобразованиях, то да, такие правила есть
ищем по запросу "ISO 14882:2011" и там целая глава о преобразовании типов. Глава 4. Можно читать не все пункты, а только те, которые касаются float

Добавлено через 1 час 42 минуты
http://isocpp.org/files/papers/N3690.pdf
1
22.11.2013, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2013, 18:18
Помогаю со студенческими работами здесь

Warning C4244: аргумент: преобразование "__int64" в "long", возможна потеря данных
Компилятор выдаёт предупреждение: warning C4244: аргумент: преобразование &quot;__int64&quot; в &quot;long&quot;,...

Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных
Что за предупреждение вылезает? Как исправить? (16 строка): warning C4244: инициализация:...

Преобразование в float и double
Начал читать книгу Шилдта. В одном из его примеров было показано преобразование типов int в float....

Error C3861 & warning C4244
Как убрать предупреждение от сюда? char str; Edit_GetText(hPlenght, str, sizeof(str) - 1);...

Программа выдаёт ошибку: warning C4244
Программа выдаёт ошибку: warning C4244: '=' : conversion from 'double' to 'float', possible loss of...

warning C4244: аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных
#include &lt;clocale&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt;...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru