Как конвертировать float в String ?
- Войдите на сайт для отправки комментариев
Втр, 28/01/2014 - 17:13
Привет всем не как не получается конвертировать float в String , чтобы разобрать строку по знака, либо квадратики получаются, либо совсем другие цифры.
Подскажите пожалуйста как это сделать?
#include <EEPROM.h>
float val_1 = 123456;
float val_2 = 0;
void setup()
{
Serial.begin(9600);
// запись в ЕЕПРОМ
byte *x = (byte *)&val_1;
for(int i = 0; i < 4; i++) EEPROM.write(i, x[i]);
// чтение из ЕЕПРОМ
byte xx[4];
for(int i = 0; i < 4; i++) xx[i] = EEPROM.read(i);
float *y = (float*)&xx;
val_2 = y[0];
}
void loop()
{
Serial.println(val_2, 5);
delay(1000);
}
Разбираем строку на части
const char* x="123456";
String asd;
void setup() {
Serial.begin(9600);
}
void loop() {
String stringOne = x; // Разбираем строку на знаки и сохраняем в stringOne
Serial.println(stringOne);
asd = stringOne.substring(2,3); // Читаем из stringOne смотрим что между строками 2,3 и сохраняем в asd
Serial.println(asd);
delay(1000);
}
а цель какая? от этого и способ зависит
самое ленивое - использовать float при инициализации String
Если вам на цифры разобрать, то нет необходимости это делать через текст
Он наверно хочет записать значение Float в EEPROM. Думаю надо в сторону копирования байтов памяти(оперативной памяти выделенной под данную переменную) смотреть - не уверен сколько байт выделено на хранение переменной - гдето от 4 до 8.
Мне значения с EEPROM. Нужно разобрать по знаком
У меня их не получается разобрать с EEPROM
Поскольку нужно перевести в String но многочисленные попытки были без успешны
bit, гуглите в сторону dtostrf (напиример: вот). Разбирайтесь. Удачи.
Вот таким способом получилось
float v; long V; v=123456.67; V=round(v*10); String asd =V/10; Serial.print("a"); Serial.println(V); Serial.print("s"); Serial.println(asd); delay(500);modf - разбивает на целую и дробную части