микропроцессоры — преобразование числа с плавающей точкой в ​​переполнение стека

Я программирую на микропроцессоре LPC 1769, но я не могу понять, как преобразовать число с плавающей запятой в строку, чтобы я мог напечатать его на моем дисплее. Я использую sprintf команда, но все равно моя программа показывает ошибку памяти. Как мне конвертировать float в строку? Мне нужно сделать это без использования стандартной библиотеки.

-4

Решение

В C ++ 11 вы можете использовать станд :: to_string преобразовать числовое значение в std::string, который вы можете превратить в строку в стиле C с помощью c_str() метод.

3

Другие решения

Это будет работать также:

#include <stdio.h>
#define MAXIMUM_TEXT_SIZE 64U
float value = 3.14159f;
char text_array[MAXIMUM_TEXT_SIZE];
snprintf(text_array, MAXIMUM_TEXT_SIZE, "%4.2f", value);

Строковая форма значения с плавающей точкой будет в text_array,

Перед использованием std::string во встроенной системе с ограниченной памятью убедитесь, что у вас есть приличное выделение памяти и настроено восстановление мусора. Если нет, используйте распределитель для строки, выделяемой из пула памяти фиксированного размера. Ищите так «фрагментация».

3

Этот код сделает это за вас:

#include <iostream>
#include <sstream>
#include <string>

int main()
{
float val =3.456;
std::stringstream stream;
stream << val;
std::string test = stream.str();
std::cout << test << std::endl;
}

тест будет содержать поплавок из val как в 3.456.

Похоже, что вы пытаетесь сделать, это использовать sprintfв этом случае вы можете сделать это:

char buffer[40]
float val =3.456;

sprintf(buffer, "%f", val);
std::string out(buffer);
std::cout << out << std::endl;

Надеюсь, это поможет.

2
По вопросам рекламы [email protected]