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

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

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

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

21.11.2013, 23:15. Просмотров 752. Ответов 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 (C++):

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

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

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

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

Необъявленный идентификатор, преобразование "int" в "float" - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define N 50 #define M 50 int n,m,i,j,k,r; void...

Ошибка усечение из "double" к "float" - C++
Обясните пожалуйста что это за ошибка усечение из &quot;double&quot; к &quot;float&quot; никак не могу понять

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
21.11.2013, 23:43 #2
C++
1
fS = (float)(fa*fb/2.0);
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
21.11.2013, 23:45  [ТС] #3
Так это вроде устаревший и не совсем корректный способ ?
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
22.11.2013, 03:09 #4
Цитата Сообщение от levent Посмотреть сообщение
2.0
потому что это double
2.0f - это float
levent
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 8
22.11.2013, 16:17  [ТС] #5
Цитата Сообщение от I.M. Посмотреть сообщение
потому что это double
2.0f - это float
Понятно.Спасибо.
А есть ли какая таблица или алгоритм может быть правильного преобразования или написания float чисел ?
fridi
-8 / 40 / 1
Регистрация: 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)
I.M.
564 / 547 / 5
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 18:18
Привет! Вот еще темы с ответами:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

усечение из "double" к "float - C++
Вообщем решил я задачу. Задача: Структура CandyBar содержит три члена. Первый член хранит название коробки конфет. Второй — ее вес...

Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" - C++
пожалуйста проверьте и помогите исправить ошибки: #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;stdlib.h&gt; ...

Ошибка "Невозможно преобразовать аргумент 1 из "double" в "double *" - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double f(double *a, double x) { double k = 0; int n; for (int i = 0;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.11.2013, 18:18
Ответ Создать тему
Опции темы

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