Convertir une chaine en nombre ??

Bonjour,
Je cherche à convertir une chaine ex: "56.2" en un nombre int=56.2
Il y a t-il une fonction spéciale ou il faut la créer ??
Merci pour l'aide.

Bonjour,

Le type int est un entier donc ne contiendra pas de virgule, utilise un float :wink:
Faits une recherche sur atof() je crois que c'est ce que tu recherche

comme le dit Oliv4945, l'exemple "56.6" doit devenir un float pour garder le .6 .. en gros

var a = "56.2";
float b = float(56.2);

suffit de lire un peut la doc ... float() - Arduino Reference

Tealcoune:
comme le dit Oliv4945, l'exemple "56.6" doit devenir un float pour garder le .6 .. en gros

var a = "56.2";
float b = float(56.2);

suffit de lire un peut la doc ... float() - Arduino Reference

il veut convertir une chaine en float non ?
float(56.2) l- tu convertis un float en float ...
float() peux prendre comme l'indique la doc "Converts a value to the float data type": n'importe quel type même un char mais pas un char[] qui est un tableau de "type" char .
atof() comme indiqué par Oliv4945 est bon normalement.

oups erreur .. lol.. perdu dans mes penser . float(56.2).. sa serre a rien.. lol.. je voulais dire float(a).. il me semble que sa fonctionne..

Et non, j'avais espéré la première fois que je l'ai vu :grin: (sans lire la doc :* ) mais non ...

Merci pour votre aide mais hélas rien n'a fonctionné alors j'ai créé ma petite fonction val();

float val(String saconv) {
saconv=saconv.trim();
byte len=saconv.length();
char az;
byte mul=0;
float val1=0;
  if (len==1) {
    val1=saconv[0]-48;
    return val1;
  }
  for (byte i=0; i<=len-1; i++) {
    az=saconv[i]; 
    if (az==46) {
      mul=len-i-1;
    }
    if (az>=48) {
      val1=val1*10; 
      val1=val1+(az-48);
    }
  }
if (mul==0) {
  return val1;
}  
for (byte i=1; i<=mul; i++) {
  val1=val1 / 10;
} 
return val1;
}

je sais c'est un peu tiré par les cheveux mais ça fonctionne....

A++

tu veux convertir un tableau char[] ou un objet String ?
parce que sinon.

  char c[] = "56.2";
  float fl = atof(c);

à partir d'un objet String

  String str = "56.2";
  char c[str.length()];
  str.toCharArray(c, str.length()+1) ;
  float fl = atof(c);

Merci c'est ça que je cherchais !
Du coup j'en ai fais une petite fonction.

float val(String str) {
  str=str.trim();
  float g;
  char c[str.length()];
  str.toCharArray(c, str.length()+1) ;
  g=atof(c);
  return (g);

}

Un grand merci à osaka et aux autres.

Yep!

Et plus simplement ???

float string2float(char* data) {
  float value = atof(data);
  return value;
}

@+

Zoroastre.

zoroastre:
Yep!

Et plus simplement ???

float string2float(char* data) {

float value = atof(data);
  return value;
}




@+

Zoroastre.

Plus simplement

atof(data);

:grin:
atof -> double atof ( const char * str );
atof() prend déjà un paramètre de type char* et retourne déjà un double (float ou double pour l'arduino c'est kifkif) ...

En faisant encore plus court on vois mieux la confusion.

float string2float(char* data) {
  return atof(data);
}

c'est un peux comme si tu ne fesais que renommer la fonction atof ...
Tu fais peut être une confusion entre un tableau de char* et un objet String qui contient un attribut de type char* ?

Sa fonction est plutôt utilisée pour la conversion String->char* dont atof à besoin :wink:

Yep!

Rien compris Osaka...Mais merci quand même :grin:

char* TRAME[10];
...
consigne_chauffage[0] = string2float(TRAME[2]);
...
float string2float(char* data) {
  float value = atof(data);
  return value;
}
...

çà fonctionne ainsi chez moi, mais c'est certain que je dois confondre pas mal de chose...

@+

Zoroastre.

Bien sure qu'elle fonctionne, ta fonction ne fait rien d'autre de plus que retourner la valeur que retourne la fonction atof() qui est dans ta fonction, donc au tant utilisé atof() directement ... :grin:
Regarde bien la signature de ta fonction et celle de atof() (c'est pas exactement celle là mais ça revient au même).

float string2float(char* data);
float atof(char* data);

A part le nom ce sont les même ... et vu que la tienne ne fait rien de plus que retourné ce que retourne atof() ...

Donc:

char* TRAME[10];
...
consigne_chauffage[0] = string2float(TRAME[2]);
...
float string2float(char* data) {
  float value = atof(data);
  return value;
}

revien au même que faire

char* TRAME[10];
...
consigne_chauffage[0] = atof(TRAME[2]);

olivbout voulait convertir un objet String en type float et vu qu'un objet String n'est pas la même chose qu'un tableau de type char(char*) et que atof(char* data) prend en paramètres un char* et non un objet String ...

String strfl = "62.3";
...
consigne_chauffage[0] = string2float(srtfl);
...
float string2float(char* data) {
  float value = atof(data);
  return value;
}

ne marchera pas ...

Petit truc, une fonction peux retourner directement la valeur qu'une autre fonction retourne $) (si la valeur de retour est du même type évidement).
Exemple avec ta fonction:

char* TRAME[10];
...
consigne_chauffage[0] = string2float(TRAME[2]);
...
float string2float(char* data) 
{
  return atof(data); // tu peux retourner directement la valeur retournée par la fonction atof sans devoir passé par une variable intermédiaire.
}

(tu vois bien ici que ta fonction ne fais ... rien ...)
:wink:

Yep!

Merci Osaka !

@+

Zoroastre.