Преобразование строки текстового поля в float? - PullRequest
2 голосов
/ 04 января 2012

Я в основном пытаюсь написать базовый конвертер в visual studio 2008, и у меня есть 2 текстовых поля, одно из которых получает ввод от пользователя, а другое - выводит результат.Когда я нажимаю кнопку, я хочу, чтобы ввод из первого текстового поля умножился на 4,35, а затем отобразился во 2-м текстовом поле.Это мой код в коде кнопки:

             String^ i1 = textBox1->Text;
             float rez = (i1*4.35)ToString;
             textBox2->Text = rez;

Однако я получаю следующие ошибки:

f:\microsoft visual studio 9.0\projects\hellowin\hellowin\Form1.h(148) : error C2676: binary '*' : 'System::String ^' does not define this operator or a conversion to a type acceptable to the predefined operator
f:\microsoft visual studio 9.0\projects\hellowin\hellowin\Form1.h(148) : error C2227: left of '->ToString' must point to class/struct/union/generic type
f:\microsoft visual studio 9.0\projects\hellowin\hellowin\Form1.h(149) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : cannot convert parameter 1 from 'float' to 'System::String ^'

Пожалуйста, помогите, я схожу с ума от того, насколько нелепо это сложнополучить некоторый вклад из текстового поля в C ++.Я погуглил все ошибки, которые у меня были, и ничего полезного не пришло, я уже час ищу ответы, пожалуйста, помогите.

Ответы [ 2 ]

7 голосов
/ 04 января 2012

Исправляя это для вас,

         String^ i1 = textBox1->Text;
         float rez = (float)(Convert::ToDouble(i1)*4.35);
         textBox2->Text = rez.ToString();

По сути, вы хотите преобразовать вашу строку в фактическое число, выполнить математику, а затем превратить ее в строку для отображения.

1 голос
/ 04 января 2012

Вы пытаетесь умножить строку на двойное число, и нет оператора, определяющего, как это сделать.Вам нужно сначала преобразовать вашу строку в двойное, а затем использовать ее в расчете.

Затем вы пытаетесь присвоить строку с плавающей точкой, что опять же является бессмысленнымfloat, затем преобразуйте его в строку при назначении его текстовому полю текстового поля.

Что-то вроде:

String^ i1 = textBox1->Text;
float rez = (Convert::ToDouble(i1)*4.35);
textBox2->Text = rez.ToString();
...