Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/41: Рейтинг темы: голосов - 41, средняя оценка - 4.54
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342

Как сменить тип с int на double или float в MFC?

14.08.2011, 22:16. Показов 8845. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
такая проблема у меня....
мне нужно в диалоге отнять 2 числа, если числа типу int, то написать било просто, а вот сделать так, чтоб пахало для double и float у меня не получаеться, подскажите что не так делаю
код програми
C++
1
2
3
4
5
6
7
8
9
void CprogDlg::OnClickedButton1()
{
    int m_1, m_2, m_3;
    m_1 = GetDlgItemInt(IDC_EDIT1);
    m_2 = GetDlgItemInt(IDC_EDIT2);
    m_3 = m_1 - m_2;
    SetDlgItemInt(IDC_EDIT3, m_3);
 
}
если в строчке
C++
1
int m_1, m_2, m_3;
сменить на double, програма все равно пашет только для int, а если сменить на double в етих строчках:
C++
1
2
m_1 = GetDlgItemInt(IDC_EDIT1);
m_2 = GetDlgItemInt(IDC_EDIT2);
то програма не пашет вобше, подскажите новичку что не так делаю?????
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2011, 22:16
Ответы с готовыми решениями:

Как в VC++ переводить строки в тип int или float ???????
Здравствуйте .... уважаемые программисты ... помогите пожалуйста перевести тип строка в тип float.... какие библиотеки использовать,...

Float в int или double в int
Надо прибавить в Shape1->Top+=0,33, но когда перевожу в int то он округляет до нуля, чего быть не должно, как это реализовать?

Как определить тип данного (int или double) введенного через textbox?
Нужно так Ввожу 2 к примеру, число записывается в List<> типа int Ввожу 2,3 - число записывается в List<> типа double.

45
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.08.2011, 22:51
сделать GetDlgItemText и сконвертировать через atof, sscanf (wtof, sscwnf)или что угодно из строки в double
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
14.08.2011, 22:55  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
сделать GetDlgItemText и сконвертировать через atof, sscanf или что угодно
я изучаю диалог только 2 дня, поетому не очень понял что ви написали ....
можно поподробней???
как ето сконвертировать??

Добавлено через 2 минуты
работаю в диалоге
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.08.2011, 23:08
ну почти то же, что и ви пишите

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
void CprogDlg::OnClickedButton1()
{
        double m[2];
        const size_t size_buffer = 50;
 
        TCHAR szBuff[size_buffer] = {0};
        const int nIdentifier[] = {IDC_EDIT1, IDC_EDIT2};
        bool bOk = true;
 
        for( unsigned i = 0 ; i<2 && bOk; ++i )
        {
          if( !GetDlgItemText(nIdentifier[i], szBuff, size_buffer) )
          {
             m[i] = _ttof( szBuff );
             if( !errno )
             {
                  bOk = false;             
             }
           }
           else
           {
                  bOk = false; 
           } 
        }
        if( bOk )
        {
             _stprintf( szBuff, _T("%f"), m[1] - m[2] )
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
}
ну это примерно, не проверял
1
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
14.08.2011, 23:17  [ТС]
такой вопрос:
я не увидел чтоб ви гдето использували atof или другое что ви писали в предидущем посте...
а так же моя прога должна делать елементарное, например 4.7-3.2
поетому делать через масив я не буду, или для того чтоб использовать атоф, обязательно делать через масив????
а то я не знаю как работает функция atof
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.08.2011, 23:21
тут не atof, тут _ttof, ну вообщем тяжело вам будет - учите основы
насчет массивов - лениво было два раза одно и тоже писать
1
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
14.08.2011, 23:41  [ТС]
результат не виводиться в 3 поле, но прога компилируеться с 1 warning, предупреждает о том, что в строчке
C++
1
_stprintf( szBuff, _T("%f"), m[1] - m[2] );
функция _stprintf не сохранена, как ето исправить?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.08.2011, 23:45
приведит точное описание warning'a
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
14.08.2011, 23:47  [ТС]
warning C4996: '_swprintf': This function or variable may be unsafe. Consider using _swprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.08.2011, 23:52
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
void CprogDlg::OnClickedButton1()
{
        double m[2];
        const size_t size_buffer = 50;
 
        TCHAR szBuff[size_buffer] = {0};
        const int nIdentifier[] = {IDC_EDIT1, IDC_EDIT2};
        bool bOk = true;
 
        for( unsigned i = 0 ; i<2 && bOk; ++i )
        {
          if( 0 != GetDlgItemText(nIdentifier[i], szBuff, size_buffer) )
          {
             m[i] = _ttof( szBuff );
             if( 0 != errno )
             {
                  // there isn't double
                  bOk = false;             
             }
           }
           else
           {
                  // there is empty pole
                  bOk = false; 
           } 
        }
        if( bOk )
        {
             _stprintf_s( szBuff, size_buffer, _T("%f"), m[1] - m[2] )
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
}
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
14.08.2011, 23:57  [ТС]
да что за...
варнинг пропал (спасибо), но кнопка и дальше неактивна...(всмисле когда я нажимаю на нее, не виводиться результат)
и мне почему то кажеться, что дело сдесь
C++
1
SetDlgItemText( IDC_EDIT3, szBuff );
я понимаю, что я уже замахую, но если не сложно, то в чем проблема?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2011, 00:02
я там обновлял код, проверьте
вы точно уверены что это ее идентификатор?
еще поставьте проверьте, что возвращает SetDlgItemText
ну и пройдитесь дебаггером чтоил
1
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
15.08.2011, 00:03  [ТС]
если запустить прогу с таким кодом, то при нажатие на кнопку ничего не происходит
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
void CprogDlg::OnClickedButton1()
{
        double m[2];
        const size_t size_buffer = 50;
 
        TCHAR szBuff[size_buffer] = {2};
        const int nIdentifier[] = {IDC_EDIT1, IDC_EDIT2};
        bool bOk = true;
 
        for( unsigned i = 0 ; i<2 && bOk; ++i )
        {
          if( !GetDlgItemText(nIdentifier[i], szBuff, size_buffer) )
          {
             m[i] = _ttof( szBuff );
             if( !errno )
             {
                  bOk = false;             
             }
           }
           else
           {
                  bOk = false; 
           } 
        }
        if( bOk )
        {
             _stprintf_s( szBuff, size_buffer, _T("%f"), m[1] - m[2] );
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
}
а если нажат на кнопку с таким кодом:
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
void CprogDlg::OnClickedButton1()
{
        double m[2];
        const size_t size_buffer = 50;
 
        TCHAR szBuff[size_buffer] = {0};
        const int nIdentifier[] = {IDC_EDIT1, IDC_EDIT2};
        bool bOk = true;
 
        for( unsigned i = 0 ; i<2 && bOk; ++i )
        {
          if( 0 != GetDlgItemText(nIdentifier[i], szBuff, size_buffer) )
          {
             m[i] = _ttof( szBuff );
             if( 0 != errno )
             {
                  // there isn't double
                  bOk = false;             
             }
           }
           else
           {
                  // there is empty pole
                  bOk = false; 
           } 
        }
        if( bOk )
        {
             _stprintf_s( szBuff, size_buffer, _T("%f"), m[1] - m[2] );
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
}
то при нажатии кнопки вилазит ошибка, типу такого Bofer too small, если нид могу залить скрин
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2011, 00:05
ну давайте
вы дебаггером пользоваться умеете?
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
15.08.2011, 00:25  [ТС]
ага, понял, ошибка вилазит из за цикла
я сменил на
C++
1
for( unsigned i = 1 ; i<10 && bOk; ++i )
кнопка нажимаеться тепер норм, но все равно результат не виводит, тоесть неактивна

Добавлено через 6 минут
Цитата Сообщение от alex_x_x Посмотреть сообщение
ну давайте
вы дебаггером пользоваться умеете?
да, шас смотрю, но долго ждать приходиться, пока компилятор все хедерние и спп файли пройдет

Добавлено через 11 минут
если я правильно увидел по дебагеру, то компилятор даже не входил в етот if
C++
1
2
3
4
5
if( bOk )
        {
             _stprintf_s( szBuff, size_buffer, _T("%f"), m[1] - m[2] );
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
я так понял, именно поетому и не виводиться в 3 поле, потомучто он его не не проходить даже
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2011, 00:27
там кстати еще m[0] - m[1]
впрочем пройдитесь от начала до конца функции дебагером
1
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
15.08.2011, 00:36  [ТС]
уряяяяяя
сделал так
в етом if поставил такое условие
C++
1
2
3
4
5
if( bOk = true )
        {
             _stprintf_s( szBuff, size_buffer, _T("%f"), m[0] - m[1] );
             SetDlgItemText( IDC_EDIT3, szBuff );
        }
и все заканало

Добавлено через 1 минуту
ну все Алекс, большое вам спасибо, ви меня скажем так спасли

Добавлено через 3 минуты
я заметил такое
C++
1
2
3
4
5
6
7
8
9
10
11
if( 0 != errno )
             {
                  // there isn't double
                  bOk = false;             
             }
           }
           else
           {
                  // there is empty pole
                  bOk = false; 
           }
ето ничего что 2 раза false стоит???
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2011, 00:49
там вложенное условие
ну и вы все таки проверьте
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
15.08.2011, 00:49  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
там вложенное условие
ну и вы все таки проверьте
говорю же, прога пашет коректно, там где else поставил вместо false true
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
15.08.2011, 08:18
Вообще, это всё следует делать через DDX, для чего он и существует. И не потребуется вручную строки в числа переводить и обратно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2011, 08:18
Помогаю со студенческими работами здесь

При вводе элементов массива выводить их тип (или int или float)
Помогите с ошибкой, и если не сложно то с заданием а то я вроде сделал только не могу проверить так как крешит прогу( А задание...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Как мне программу с int переделать в Float i double?
как мне програму с int переделать в Float i double??? #include &lt;iostream&gt; using namespace std; int main() { cout...

Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR
Столкнулся с проблемой не как не переведу в нормальный вид вот код #include &lt;iostream&gt; #include &lt;Windows.h&gt; ...

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru