Je me demande comment récupérer les chiffres d'un float c'est a dire dans une liste (ou tableau ou dictionnaire) récupérer par exemple dans 78.3 le 7 le 8 la virgule et le 3.
Et pour commencer j'ai déjà essayer de recuperer au moins juste les chiffres sans la virgule mais le probleme c'est que dans mon code :
float recupchiffre(float nombre){
int i = 0;
float chiffres [];
while (nombre != 0)
{
chiffres[i] = floor(nombre % 10);
nombre /= 10;
i++;
}
return chiffres;
}
l'erreur est que l'on ne peut faire des opérations tel que modulo avec un float, et je n'ai aucune autre idée de comment récupérer tout ça.
Je me demande comment récupérer les chiffres d'un float c'est a dire dans une liste (ou tableau ou dictionnaire) récupérer par exemple dans 78.3 le 7 le 8 la virgule et le 3.
Et pour commencer j'ai déjà essayer de recuperer au moins juste les chiffres sans la virgule mais le probleme c'est que dans mon code :
float recupchiffre(float nombre){
int i = 0;
float chiffres [];
while (nombre != 0)
{
chiffres[i] = floor(nombre % 10);
nombre /= 10;
i++;
}
return chiffres;
}
l'erreur est que l'on ne peut faire des opérations tel que modulo avec un float, et je n'ai aucune autre idée de comment récupérer tout ça.
- Edité par Ectario il y a environ 8 heures
Salut,
Tu peux essayer de convertir ton float en string et de récupérer chaque caractère.
Est ce que c'est possible ? Car il me semble pas qu'en C ce soit si simple, si ? En python je sais que suffit juste de déclarer la variable comme on veut par exemple passer de int a Str ect.. Mais en C aucune idée.
Déja si tu penses programmer en C pourquoi poster sur le forum C++ ?
Ensuite avec juste une petite recherche google "float to str c++" on peut rapidement trouver la fonction std::to_string() qui prend comme argument un float et qui te renvoie un string
void recupchiffre(int nombre,int & c, int & d, int & u){ //int nombre on le rentre en faisant floor(le float) et c d u correspondent a centaine dizaine unité (on rentre 0 dans l'appel de la fonctionne et les int & agiront dessus)
int i = 1;
int chiffres[i];
if (nombre>=10 && nombre<100){
chiffres[0]=((nombre-(nombre%10))/10); //retrouve la dizaine
chiffres[i++];
chiffres[1]= nombre%10;
d=chiffres[0];
u=chiffres[1];
Serial.println("CHIFFRES :");Serial.println(*chiffres);Serial.println(*(chiffres+1));}
else if (nombre<10){
chiffres[0]=nombre;
u=chiffres[0];
Serial.println("CHIFFRES :");Serial.println(*chiffres);}
else {
chiffres[0]=((nombre-(nombre%10))/100); //retrouve la centaine
chiffres[i++];
chiffres[1]= nombre%10;
chiffres[i++];
chiffres[2]= nombre%100;
c=chiffres[0];
d=chiffres[1];
u=chiffres[2];
Serial.println("CHIFFRES :");Serial.println(*chiffres);Serial.println(*(chiffres+1));Serial.println(*(chiffres+2));}
}
oui je me suis trompé je voulais dire c++ pour ca que je suis ici et ducoup pour le moment mon code au dessus fonctionne seulement pour ce qui a avant la virgule.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
GitHub