IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Problème de conversion de type en string


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut Problème de conversion de type en string
    Bonsoir à tous,

    j'ai un problème de conversion de type, à l'affichage, ça me donne un '?' au lieur de mon chiffre a virgule

    Un coup de main serait grandement apprécié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    void LCDAfficheur::print(float value) {
        char buffer[12];
        snprintf(buffer, sizeof(buffer), "%.2f", value);
        print(buffer);
    }
     
    void LCDAfficheur::print(double value) {
        char buffer[12];
        snprintf(buffer, sizeof(buffer), "%.2f", value);
        print(buffer);
    }

  2. #2
    Membre chevronné
    Avatar de ABD-Z
    Homme Profil pro
    Ingé. webapps embarquées – Admin/mainteneur serveur/BDD – Formateur WordPress – Desiger : logo/site
    Inscrit en
    Septembre 2016
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingé. webapps embarquées – Admin/mainteneur serveur/BDD – Formateur WordPress – Desiger : logo/site

    Informations forums :
    Inscription : Septembre 2016
    Messages : 302
    Billets dans le blog
    3
    Par défaut
    Bonsoir,

    Si j'ai bien compris le problème on un point d'interrogation à la place d'un point.
    Par exemple :
    au lieu d'afficher 12.3 il affiche 12?3

    En tout cas, j'ai testé le bout de code et normalement ça devrait marcher (printf à la place de print).

    Je propose dans ce cas de tester avec une autre fonction comme to_string.

    Si le résultat est le même, il faudra alors convertir la partie entière, puis convertir la partie décimale et mettre le point au bon endroit. Ou tout simplement dans le buffer, remplacer le point d'interrogation par un point.

    J'aimerais avoir des exemples

  3. #3
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Si j'ai bien compris le problème on un point d'interrogation à la place d'un point.
    Par exemple :
    au lieu d'afficher 12.3 il affiche 12?3
    Non ce n'est pas le souci.

    ----
    Si vous êtes sur un petit Arduino (UNO, MEGA, ...) la gestion des nombres décimaux (float, double) n'est pas supportée dans printf pour des raisons d'occupation de la mémoire pour ces fonctions.

    Si vous voulez mettre un nombre décimal dans un buffer, il faudra utiliser dtostrf(). Assurez vous d'avoir la place nécessaire dans le buffer, la fonction ne vérifie rien.

    mais si vous voulez juste afficher votre nombre sur l'écran LCD, alors ne vous embêtez pas avec un buffer intermédiaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void LCDAfficheur::print(double value) {
        print(value, 2);
    }
    et pas la peine d'implémenter la version avec float, il sera promu en double (ce qui est la même chose sur UNO ou MEGA de toutes façons)

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/06/2007, 17h07
  2. conversion de type Object -> String
    Par wiss20000 dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2007, 00h15
  3. Conversion de type string en char ?
    Par CoachMac dans le forum C
    Réponses: 18
    Dernier message: 08/08/2006, 10h20
  4. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo