dtostrf giving wrong value

Hi,

I'm trying to convert a float value to string with dtostrf but it gives me the wrong output.

float dnm = 41.0607234;//my float value
char buff[10];//giving 10 because value 10 characters
dtostrf(dnm, 10, 7, buff);//this should give me 41.0607234

but dtostrf gives

41.0607220

i'm 100% sure i'm doing something wrong but couldn't find what am i doing wrong.

dtostrf(floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, charBuf);
dtostrf(myfloatvalue,how many characters until dot,how many characters after dot);//am i understing right?

32 bit float values often cannot be represented exactly in binary. So when you enter 41.0607234 as a float it is stored as 41.0607220, the closest binary value. You can only expect about 6 digits of accuracy.

And in 8 bit Arduinos, double is the same as float (32 bit).

groundFungus: 32 bit float values often cannot be represented exactly in binary. So when you enter 41.0607234 as a float it is stored as 41.0607220, the closest binary value. You can only expect about 6 digits of accuracy.

And in 8 bit Arduinos, double is the same as float (32 bit).

thanks