Перевод string в float c++/cli
Не могу никак перевести string в float . В методичке написан метод StrToFloat() , но в моей Visual Studio 2017 это не воспринимается. Подскажите какой метод в C++/CLI использовать для этой операции. Через strof тоже не работает
float f1 = strtof( textBox1->Text);

Отслеживать
Дмитрий Котовский
задан 12 фев 2019 в 10:05
Дмитрий Котовский Дмитрий Котовский
67 1 1 серебряный знак 10 10 бронзовых знаков
StrToFloat — это борландовская ф-ция. atof нужна (и стандартная библиотека). А да. float::Parse для с++/cli или что-то такое.
12 фев 2019 в 10:06
Картинка с ошибкой студии, конечно, полезна, но надо ещё и код приводить в текстовом виде в вопросе.
12 фев 2019 в 10:16
Поддерживаю, Сайт SO хорошо подсвечивает синтаксиз языка для текста, публиковать картинку не нужно, вместо картинки нужно публиковать сам текст.
12 фев 2019 в 10:18
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < float f1 = StrToFloat(textBox1->Text); >
12 фев 2019 в 10:21
Вам нужно преобразовать строк в число или число в строку? А то в заголовке одно, в теле вопроса другое
Как преобразовать строку в число с плавающей запятой в Python
В Python есть различные функции преобразования типов, которые напрямую меняют один тип данных на другой. В этой статье мы расскажем о том, как преобразовать строку в число с плавающей запятой.
Зачем вообще може понадобиться такое преобразование? В Python, когда входные данные получаются в результате чтения или записи файла или выполнения какой-либо другой операции с файлом, ввод мы получаем в виде строковой переменной. Даже если мы запрашивали число с плавающей запятой, метод input() получает входные данные в виде строки. Поэтому для дальнейшей работы с нужными нам числами придется сначала привести string к float.
Использование метода float()
Чтобы преобразовать строку в число с плавающей запятой, в Python используется функция float(). Эта функция принимает только один параметр — строку или целое число. Если аргументы не переданы, метод возвращает 0.0 .
Если входная строка имеет аргументы за пределами диапазона чисел с плавающей запятой, вы получите ошибку OverflowError .
Для реализации следующих скриптов на Python установите сам Python, а также подходящую IDE (Pycharm, Jupiter, Spyder и т.д.). Создайте новый файл, вставьте туда код и запустите его.
string = '3.4567' number = float(string) print('Float Value is', number) # Output: # Float Value is 3.4567
В данном примере мы берем строку «3.4576» . Мы конвертируем ее, передавая в функцию float(). Дальше строка преобразуется в число с плавающей запятой и возвращается нам.
Как преобразовать строку в число с плавающей запятой, если в строке есть лишние запятые
В следующем примере мы работаем со строкой «3,2.759» . В данной строке есть число, разделенное запятой и точкой.
Важно отметить, что в Python десятичная часть отделяется с помощью точки. И в данном случае запятая – это просто лишний символ, который добавляет нам трудностей при переводе числа из строкового типа в вещественный.
Преобразовать такую строку в число с плавающей запятой сложнее. Вызов функции float() напрямую приведет нас к ошибке. Поэтому, прежде чем вызвать функцию float(), нам нужно избавиться от лишней запятой в строке.
Запятую мы удалим из строки с помощью функции replace(), заменив ее на пустую строку.
string = '3,2.759' number = float(string.replace(',', '')) print('Float Value is', number) # Output: # Float Value is 32.759
После удаления запятой из строки значение нашей строки будет «32.759» . Далее мы можем применить метод float(), чтобы получить число вещественного типа.
Преобразование списка строк
Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for . Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().
str = ['12.23', '45.78', '69.34', '38.65'] number = [] for item in str: number.append(float(item)) print(number) # Output: # [12.23, 45.78, 69.34, 38.65]
В данном примере у нас есть список [‘12.23’, ‘45.78’, ‘69.34’, ‘38.65’] . Мы создаем пустой список number , куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number . При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.
В итоге мы получим новый список number , состоящий из исходных элементов, но только теперь это уже не строки, а числа с плавающей запятой.
Задание определенной точности
Иногда нам нужно указать количество знаков после запятой в числе. В такой ситуации мы используем все ту же функцию float(), а после нее — функцию format(), чтобы определить количество десятичных знаков в нашем числе.
В данном примере мы работаем со строкой «6.759104» . Нам нужно преобразовать эту строку в число с плавающей запятой и оставить только 4 цифры после запятой.
str = '6.759104' number = float(str) result = ''.format(number) print(result) # Output: # 6.7591
Здесь метод format() используется для определения количества десятичных знаков в числе с плавающей запятой. В данном случае в исходном числе после запятой больше знаков, чем четыре, поэтому происходит округление. Однако если бы вдруг знаков оказалось меньше, то в конец просто бы добавились нули.
Таким образом, после применения функции format() мы получим 6.7591 .
Заключение
В Python бывают такие случаи, когда для выполнения требуемой операции необходимо заменить один тип данных на другой. Метод input() в Python возвращает нам объект типа string, поэтому для выполнения различных операций с пользовательскими данными необходимо приводить полученные строки к нужному типу. В этой статье мы рассмотрели приведение строк к типу float.
Важно отметить, что для приведения к типу float с помощью функции float() строка должна иметь значение с точкой. То есть преобразовать буквы в число с плавающей запятой не получится. Если попытаетесь, получите ValueError . Если элемент находится за пределами диапазона плавающей переменной, в выводе отображается ошибка OverflowError . Если функции float() не передан аргумент, возвращается 0.0 .
Надеемся, данная статья была для вас полезна. Успехов в написании кода!
Как преобразовать string в float c
Преобразование типов данных, это приведение одного типа к другому. Например, приведение целочисленной переменной к числу с плавающей точной, или преобразование числа в строку. В C# выделяют два варианта преобразования типов:
- Неявное преобразование типов. Это, так называемое безопасное преобразование типов в C#. Например, преобразование из типа float (более «маленький» тип) в тип double (более «большой» тип). При таком преобразовании никакая информация не «потеряется», что при обратном преобразовании вполне возможно.
- Явное преобразование типов. Такое преобразование выполняется программистом с прямым указанием типа, к которому нужно привести переменную. Для такого преобразования требуется наличие оператора преобразования.
А теперь, я покажу как можно использовать явное преобразование типов в C#:
using System; namespace TypesConvertion < class Program < static void Main(string[] args) < //Число с плавающей точкой double doubleData = 245.45; //Вывод этого числа Console.WriteLine(doubleData); //А теперь, мы сделаем на основе этого числа, цело число int intData = (int)doubleData; //Вывод целого числа Console.WriteLine(intData); //Чтобы окно не закрылось раньше времени Console.ReadKey(); >> >
Преобразование типа double в тип int выполнялось в выделенной строке (строке с номером 16). Если вы соберете данный пример и запустите его, то увидите, что преобразование типов прошло, т.е. из числа с плавающей точкой мы получили целое число.
Так же, для преобразования данных из одного типа в другой, есть целый класс с именем Convert, у которого имеются специальные методы. Ниже, в таблице, представлены основные методы этого класса.
| Название метода | Целевой тип |
|---|---|
| ToBoolean | bool |
| ToByte | byte |
| ToChar | char |
| ToDouble | double |
| ToSingle | float |
| ToInt32 | int |
| ToInt64 | long |
| ToString | string |
А теперь, пример использования класса Convert и его методов:
using System; namespace TypesConvertion < class Program < static void Main(string[] args) < //Число с плавающей точкой double doubleData = 245.45; //Вывод этого числа Console.WriteLine(doubleData); //А теперь, мы сделаем на основе этого числа, цело число int intData = Convert.ToInt32(doubleData); //Вывод целого числа Console.WriteLine(intData); //Чтобы окно не закрылось раньше времени Console.ReadKey(); >> >
Как видите, это практически тот же код, что был в первом примере, но с использованием другого подхода в преобразовании типов.
И обратите внимание на еще одни момент, если один тип нельзя преобразовать в другой, а вы это попытаетесь сделать, то получите ошибку в программе!
Пользоваться возможность преобразования типов вам придется довольно часто!
Как преобразовать string в float c
Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
21.03.05 13:20: Перенесено модератором из ‘WIN API’ — Odi$$ey
Re: Преобразование числа типа float в строку
| От: | SWW | |
| Дата: | 21.03.05 09:32 | |
| Оценка: | +1 | |
А>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
«%f» никогда не пишет ‘е’ если мне память не изменяет.
Re: Преобразование числа типа float в строку
| От: | Аноним | |
| Дата: | 21.03.05 09:39 | |
| Оценка: | -1 | |
Здравствуйте, Аноним, Вы писали:
А>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
А>Спасибо.
Re[2]: Преобразование числа типа float в строку
| От: | Аноним |
| Дата: | 21.03.05 09:40 |
| Оценка: |
Здравствуйте, SWW, Вы писали:
А>>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
SWW>»%f» никогда не пишет ‘е’ если мне память не изменяет.
Re[2]: Преобразование числа типа float в строку
| От: | Аноним |
| Дата: | 21.03.05 09:50 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
А>>Спасибо.
А>пользуй %g
Люди, а где это писать-то надо?
Сейчас я то-то вообще ничего не понимаю.
Не могли бы вы привести пример кода.
Re[3]: Преобразование числа типа float в строку
| От: | korzhik |
| Дата: | 21.03.05 09:52 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, SWW, Вы писали:
А>>>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
SWW>>»%f» никогда не пишет ‘е’ если мне память не изменяет.
А>а что значит «%f»?
#include float f = 1.1f; char buf[30]; sprintf(buf, "%f", f);
Re[4]: Преобразование числа типа float в строку
| От: | Аноним |
| Дата: | 21.03.05 10:00 |
| Оценка: |
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, SWW, Вы писали:
А>>>>Есть число записаннов float, его надо преобразовать в троку так что если число например 199986.987 или 0.0098 то и получалось так как есть а не с буквой ‘е’ и в степени
SWW>>>»%f» никогда не пишет ‘е’ если мне память не изменяет.
А>>а что значит «%f»?
K>
K>#include K> float f = 1.1f; K> char buf[30]; K> sprintf(buf, "%f", f); K>
Re[5]: Преобразование числа типа float в строку
| От: | korzhik |
| Дата: | 21.03.05 10:30 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
>>
K>>#include K>> float f = 1.1f; K>> char buf[30]; K>> sprintf(buf, "%f", f); K>>
Лучше использовать функцию _snprintf — это более безопасно (если она есть в вашем CRT)
float f = 1.1f; char buf[BUF_SIZE]; _snprintf(buf, BUF_SIZE - 1, "%f", f); buf[BUF_SIZE - 1] = 0;
Re[6]: Преобразование числа типа float в строку
| От: | Centaur | |
| Дата: | 21.03.05 17:21 | |
| Оценка: | +1 | |
Здравствуйте, korzhik, Вы писали:
K>>> sprintf(buf, «%f», f);
K>Лучше использовать функцию _snprintf — это более безопасно (если она есть в вашем CRT)
А еслт речь идёт о С++, то почему бы не использовать манипулятор std::fixed.
#include #include #include std::cout // или, если нужна именно строка символов, а не вывод в поток std::ostringstream oss; oss // работаем с oss.str()