Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 06.01.2015
Сообщений: 5

Преобразовать float в CString

06.01.2015, 06:48. Показов 3392. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу решить проблему
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void CFunction2ArgDlg::OnBnClickedButton1()
{
    CString S;
    CString T;
    CString K;
 
    GetDlgItemTextW(IDC_EDIT1, S);
    S.Format(_T("%.15f"), vr_S);
 
    GetDlgItemTextW(IDC_EDIT2,T);
    T.Format(_T("%.15f"), vr_T);
 
    float vr_K=H(vr_S,vr_T)+Max(powf(H(vr_S-vr_T,vr_S*vr_T),2),powf(H(vr_S-vr_T,vr_S+vr_T),4));
 
//Надо преобразовать float vr_K в строку CString K
    SetDlgItemTextW(IDC_EDIT3, K);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2015, 06:48
Ответы с готовыми решениями:

Вечный вопрос))CString to float/string/int
Интересует такое... в проекте MFC нужно перевести строку с Edit Text в типы float int или string...сколько способов не пробовал но...

Как преобразовать числовые типы в CString и обратно с помощью MFC?
Я нашол в MSDN-е C-шные функции из stdlib.h типа :atof(), atoi() но это C-шные а как же MFC .Нашол и обратные функции типа _itoa() но им...

CString::Format() и преобразование double в CString
Вот фрагмент программы: void CMy6_1Dlg::OnRadio3() { CString s; int i=m_list1.GetCount(); int a; int k=0; float...

5
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.01.2015, 17:28
Лучший ответ Сообщение было отмечено schdub как решение

Решение

Цитата Сообщение от Flart Посмотреть сообщение
GetDlgItemTextW(IDC_EDIT1, S);
* * S.Format(_T("%.15f"), vr_S);
- ты берёшь текст и пытаешся с ним работать к с флоатом, что за глупость.

Цитата Сообщение от Flart Посмотреть сообщение
GetDlgItemTextW(IDC_EDIT1, S);
float fValue = 0;
if( sscanf(S, "%lf", &fValue) )
* * {
//тут пиши обработку для случая успешног опреобразования
}
Добавлено через 2 минуты
А по нормальному это делается при помощи UpdateData(true) и соответствующей привязке элементов диалогового окна. Вывод в Edit цыфры


Когда вижу в коде MFC апишный изврат, то невольно наворачиваются слёзы..
1
0 / 0 / 1
Регистрация: 06.01.2015
Сообщений: 5
06.01.2015, 21:59  [ТС]
Спасибо, заработало. У меня тот же код на Delphi, там проблем не возникло и все давно работает. Просто возникла необходимость на Visual C++ перенести, а в нем не работал.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.01.2015, 10:38
Цитата Сообщение от Flart Посмотреть сообщение
У меня тот же код на Delphi, там проблем не возникло и все давно работает.
- не может быть такого, в коде из поста 1 неверная концепция, посмотри внимательно должны быть отличия.
Приведи кусок кода на делфи.
0
0 / 0 / 1
Регистрация: 06.01.2015
Сообщений: 5
07.01.2015, 16:24  [ТС]
Конечно там отличия. Там корректно применены функции преобразования, а здесь нет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.BitBtn1Click(Sender: TObject);  //Обработчик события щелчка на кнопке "="
begin
MessageBeep(MB_ICONHAND); //Установка системного звука при щелчке на кнопке.
Try  //Начало блока обработки исключений.
  s:=StrToFloat(Edit1.Text); //Преобразование строки в поле ввода Edit1 в действительное число.
  t:=StrToFloat(Edit2.Text); //Преобразование строки в поле ввода Edit2 в действительное число.
Except //Код выполняется при возникновении исключения
  MessageBox(handle,'Кажется Вы неправильно ввели одно из чисел, проверьте пожалуйста.','Ошибка ввода!',MB_ICONWARNING); //Вывод сообщения.
End; //Конец блока обработки исключений.
  K:=H(s,t)+Max(sqr(H(s-t,s*t)),Power(H(s-t,s+t),4)); //Вычисление  выражения с использованием функции H
  Str(K: 6: 15,myString); //Преобразование результата вычислений в строку. Вывод фоматированный с точностью до 3 знаков после запятой.
  Label4.Caption:=myString; //Присвоение результата вычислений в виде строки тексту надписи Label4.
end;
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.01.2015, 17:36
Цитата Сообщение от Flart Посмотреть сообщение
StrToFloat(Edit1.Text);
- StrTofloat это подобие atof(), но уж никак не форматирвоанного преобразования во внутренний формат CString (понимается в набор чаров) коим является CString::Format
Цитата Сообщение от Flart Посмотреть сообщение
GetDlgItemTextW(IDC_EDIT1, S);
float val = atof(S);
- но данный вариант я не рекомендую по причине ряда костылей связанных именно с атоф, Сишный sscanf на порядок удобней и "безопасней" в использовании

Добавлено через 2 минуты
Наиболее безопасным может явится такой вараинт
C++
1
2
3
4
5
6
GetDlgItemTextW(IDC_EDIT1, S);
wstringstream ws((LPWSTR)S);
float val = 0;
if( ws>>val ){
//тут пиши обработку для случая успешног опреобразования
}
- но мне он нравится куда меньше чем вараинт с sscanf ибо некомпактен
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2015, 17:36
Помогаю со студенческими работами здесь

Ошибка. Невозможно преобразовать CString в float
Здравствуйте! Программа заключается в следующем - пользователь добавляет в EditControl данные, нажимает на ОК, и эти данные попадают в...

Преобразование CString->float и обратно
Здравствуйте. Можно ли строку типа CString преобразовать в число типа float (или double) (я уверен, что в строка будет вида 123.123)и...

Error C2664: fmatr: невозможно преобразовать параметр 1 из 'float [4][4]' в 'float *'
#include "stdafx.h" #include<stdio.h> #include<conio.h> /* Описание функции fmatr */ void fmatr(float *ptx, int m, int n, float...

Fasm преобразовать half float to float 32 bits
Есть 16 битное число 0xB9A0 , как half-float. Как его перевести в float 32 бита (4 байта) ? У меня есть пару вариантов перевода, но...

Не удается неявно преобразовать тип float в float[*,*]
В классе Alg есть метод Calculation(float a, float b, int n) типа float. В нем описана некоторая последовательность вычислений и в итоге...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru