decimal values in CHAR to FLOAT


I have temperature value stored in an array. (e.g. 37,3) as when I dump locations from 0 to 3, I’ll get 51,55,46 and 51 in decimal.

I need to convert those into a float in order to further process them, but I always loose the decimal value on the way.

This is a huge project and to give you an idea, I’ve included some code.

void loaddefaults() 
byte value;

  for(int sayman=0; sayman< 30; sayman++) //
       value =;
       epromstring[sayman] = value;
      Serial.println("displaying value of epromstring :");


So, I’m sure that data is in including decimal point and data.

Now, When I convert like so,

char epromstring[30];

float minderece;

minderece == epromstring[0]+epromstring[1]+ epromstring[2] + epromstring[3];

Result is 37.00

Please note that all data stored is in the same format, that is to say, xx,x.

Is there a way to pass data including decimal into float ?

Thank you.

Please use code tags.

Read this before posting a programming question

You could use "atof", but I'm not sure how it would handle the comma, and you'd have to make sure you have a proper C-style string. Or, you could simply store the float in the EEPROM as a float in the first place.

The atof() function would work of the decimal point was not a comma.

minderece == epromstring[0]+epromstring[1]+ epromstring[2] + epromstring[3];

If it is stored as xx,x

then not only are you adding the ascii value of ',' but you are adding the decimal part as if it were a whole number. You would end up adding 3 + 7 + 44 + 2, which is not 37...


minderece == (epromstring[0]*10) + epromstring[1] + (float)(epromstring[3]/10);