Как конвертировать float в String ?

bit
Offline
Зарегистрирован: 07.05.2012

Привет всем не как не получается конвертировать 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);
}

 

axill
Offline
Зарегистрирован: 05.09.2011

а цель какая? от этого и способ зависит

самое ленивое - использовать float при инициализации String

Если вам на цифры разобрать, то нет необходимости это делать через текст

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Он наверно хочет записать значение Float в EEPROM. Думаю надо в сторону копирования байтов памяти(оперативной памяти выделенной под данную переменную) смотреть - не уверен сколько байт выделено на хранение переменной - гдето от 4 до 8.

bit
Offline
Зарегистрирован: 07.05.2012

Мне значения с EEPROM. Нужно разобрать по знаком

bit
Offline
Зарегистрирован: 07.05.2012

У меня их не получается  разобрать с EEPROM

Поскольку нужно перевести в String но многочисленные попытки были без успешны

 

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

bit, гуглите в сторону dtostrf (напиример: вот). Разбирайтесь. Удачи.

bit
Offline
Зарегистрирован: 07.05.2012

Вот таким способом получилось

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);

 

 

 

 

com
Offline
Зарегистрирован: 06.09.2013

modf - разбивает на целую и дробную части