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

warning C4244: =: преобразование "double" в "float", возможна потеря данных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
DocaN
 Аватар для DocaN
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 12
20.05.2013, 08:41     warning C4244: =: преобразование "double" в "float", возможна потеря данных #1
Вот код. Работало, теперь не работает. Не пойму в чём дело.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<random>
#include<Windows.h>
#include<cmath>
 
int RegenirationHp()
 
{
    setlocale(LC_ALL, "rus");
int str;      //Количество силы (1 ед. силы = 19 ед. здоровья).
int maxHp;    //Максимальный запас здоровья. (сила * 19) + 100.
float regHp;      //Скорость регенирации здоровья. 
float tekHp;      //Текущее здоровье.
 
tekHp = 10.00;
str = 24;
maxHp = (str * 19) + 100;
regHp = (str / (str * 00.5) + 0.25);
 
while (tekHp < maxHp)   //Если текущее здоровье меньше максимального запаса здоровья.
{
    tekHp = tekHp + regHp;    //То добовляем еденицу регенирации "regHp".
        std::cout << "Текущее здоровье = " << tekHp << std::endl;
 
if (tekHp > maxHp)
{
        tekHp = maxHp;
        std::cout << "Максимальное здоровье = " << maxHp << std::endl;
}}
system("pause");
return RegenirationMp();
}
 
//*******************************************************************************************************************************//
 
int RegenirationMp()
 
{
    setlocale(LC_ALL, "rus");
int intc;          //Количество интелекта (1 ед. интелекта = 13 ед. маны).
int maxMp;      //Максимальный запас маны. (интелект * 13) + 100.
float regMp;   //Скорость регенирации маны.
float tekMp;  //Текущая мана.
 
tekMp = 10.00;
intc = 16;
maxMp = (intc * 13) + 100;
regMp = (intc / (intc * 00.2) + 0.15);
 
while (tekMp < maxMp)    //Если текущее здоровье меньше максимального запаса маны.
{
    tekMp = tekMp + regMp;  //То добовляем еденицу регенирации "regMp".
        std::cout << "Текущая мана = " << tekMp << std::endl;
 
if (tekMp > maxMp)
{
        tekMp = maxMp;
        std::cout << "Максимальная мана = " << maxMp << std::endl;
}}
system("pause");
return RegenirationHp();
}
Если нельзя float присвоить integer значение, как обойти эту ситуацию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 08:41     warning C4244: =: преобразование "double" в "float", возможна потеря данных
Посмотрите здесь:

C++ Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/".
Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") C++
C++ необъявленный идентификатор,преобразование "int" в "float"
C++ warning C4244: =: преобразование "double" в "float
Warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++
Ошибка "Невозможно преобразовать аргумент 1 из "double" в "double *" C++
"Чудеса типа float" или "Куда девалась информация?" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
20.05.2013, 09:06     warning C4244: =: преобразование "double" в "float", возможна потеря данных #2
Цитата Сообщение от DocaN Посмотреть сообщение
Если нельзя float присвоить integer значение
кто сказал?
C++
1
2
3
4
5
6
7
int main()
{
    int a=0;
    float b=100.2;
 
    b=a;
}
, просто вы получите целое

C++
1
2
3
4
5
6
#include<cmath>
 
int RegenirationHp();
int RegenirationMp();
 
ваш этот код дальше
DocaN
 Аватар для DocaN
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 12
20.05.2013, 10:12  [ТС]     warning C4244: =: преобразование "double" в "float", возможна потеря данных #3
C++
1
tekMp = maxMp;
тоже самое что и вы предложили. но при компиляции откуда не возьмись появляется double.
якобы будет потеря данных. но мне же нужно вывести maxHp и maxMp в исходное значение.
Пользуюсь VS2012 Ultimate

Что самое интересное, сегодня уже запускалась программа.

Добавлено через 20 минут
Всё нашёл решение проблемы. спасибо за помощь.
Yandex
Объявления
20.05.2013, 10:12     warning C4244: =: преобразование "double" в "float", возможна потеря данных
Ответ Создать тему
Опции темы

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