Перейти к содержимому

Как преобразовать string в float c

  • автор:

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

Привет! Подскажите, пожалуйста, наиболее простой способ, как преобразовать значение типа string в float.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Преобразовать из float в string
Скажите, пжл, какие существуют ф-ии для конвертации из float в string?

Из float в string
Как из переменной типа флоат записать число в string? float x = -123.56; string Str; Нужно чтобы.

float vs string
в общем есть такая конструкция FILE* pfi; char* fn = "D:/test.txt"; pfi= fopen(fn,"w+");.

2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
Регистрация: 19.11.2012
Сообщений: 27

soon, а какую библиотеку и пространство имён нужно использовать, а то у меня компилятор у Dev-C++ не распознаёт её.
Вот, что пишут я:

1 2 3 4 5 6 7 8
#include using namespace std; int main() { string str; cin >> str; float fl = stof(str); }

2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
Там же указано
Defined in header
Не забываем про
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Преобразовать строку в float
Итак у меня есть переменная Char. В ней записано ‘5.2’. И есть переменная float. Как мне поместить.

Преобразовать указатель в float
допустим есть такая структура struct lol < int a; float b; >ololo; ololo.a = 34;.

String разбить на float
Всем привет.Хочу создать консольную программу по нахождению неизвестной переменной — x. Программа.

Конвертация string в float
string to float или double обычная консоль как перевести

Преобразование строки в число с плавающей запятой в C++

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

1. Использование std::stof

Начиная с C++11, мы можем использовать std::stof функция для анализа строки как числа с плавающей запятой. Вот простое, короткое и элегантное решение C++11, демонстрирующее это:

std :: string s = «3.14» ;
float f = std :: stof ( s ) ;
std :: cout << f << std :: endl ; // 3.14

Чтобы получить возвращаемое значение типа double, используйте std::stod функция вместо этого:

std :: string s = «3.14» ;
double d = std :: stod ( s ) ;
std :: cout << d << std :: endl ; // 3.14

Лучшим вариантом является использование strtof() а также strtod() функции, чтобы получить число с плавающей запятой как float или double соответственно. Эта функция отказоустойчива и никогда не генерирует исключений.

std :: string s = «3.14» ;
float f = strtof ( s . c_str ( ) , nullptr ) ;
std :: cout << f << std :: endl ; // 3.14 double d = strtod ( s . c_str ( ) , nullptr ) ; std :: cout << d << std :: endl ; // 3.14

2. Использование sscanf() функция

The sscanf() Функция может использоваться для чтения отформатированных данных из строки. Строка преобразуется в соответствующий тип данных в соответствии со спецификатором формата. Чтобы получить значение с плавающей запятой, используйте %f спецификатор формата. Аналогичным образом используйте %lf спецификатор формата, чтобы получить двойное значение.

Как преобразовать 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()

Как преобразовать строку в число с плавающей запятой в 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 .

Надеемся, данная статья была для вас полезна. Успехов в написании кода!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *