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

Bibliothèque standard C Discussion :

[sprintf] Ecrire un réel sur 8 caractères


Sujet :

Bibliothèque standard C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Points : 68
    Points
    68
    Par défaut [sprintf] Ecrire un réel sur 8 caractères
    Bonjour à tous,

    Je souhaite formatter une valeur réelle sur 8 caractères, en comptant tous les caractères, c'est à dire le signe + ou -, le séparateur décimal, le E pour la notation scientifique si besoin et bien sûr tous les chiffres significatifs.

    Voici quelques formats que j'ai essayé et qui ne me donnent pas satisfaction:
    -"%+#8f" ou "%8f" persiste à m'afficher 6 décimales même lorsque la valeur n'en contient pas. Je crois qu'il existe un moyen pour spécifier le nombre de décimales par défaut mais je ne le connais pas. Je ne parle pas du format "%8.0f" qui n'irait pas pour une valeur type 0.12345.
    -"%+#8E" pose souci car le résultat se termine par "E+001" par exemple et prend trop de caractères. En comptant l'éventuel signe négatif, le séparateur décimal et les 5 caractères ci-dessus, il ne reste plus de place que pour un chiffre significatif...

    Je précise que j'utilise un compilateur C++ et que je peux donc éventuellement utiliser des stream sur des string ou des outils dans le genre dans la bib' C++. J'utilise sprintf car ce sont les habitudes de la maison et que jusqu'ici, je le trouve plus pratique que les stream.

    Si des gens ont déjà résolu ce problème, qui paraît assez simple au départ, je suis intéressé de savoir comment.

    Merci !

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    "%+#8g" ? Par exemple :
    1.234 -> +1.23400
    -12.345 -> -12.3450
    12345.678 -> +12345.7 (0.7 est plus proche de 0.678 que 0.6 ...)

    Attention, 8 ("%+#8g") est un minimum. Si le nombre est trop grand par exemple, il sera affiché avec le nombre nécessaire de caractères. Donc, tu dois faire un test avant d'afficher un nombre. Par exemple : s'il est trop petit (inférieur en valeur absolue à +0.00001), le remplacer par 0. S'il est trop grand, afficher "TOO BIG" à sa place ...

Discussions similaires

  1. Ecrire un entier sur N caractères
    Par messahel dans le forum Pascal
    Réponses: 1
    Dernier message: 20/06/2009, 22h28
  2. split sur plusieurs caractères ?
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 08/02/2005, 21h44
  3. [FLASH MX2004] Pb sur des caractères accentués.
    Par sandrineLL dans le forum Flash
    Réponses: 3
    Dernier message: 05/08/2004, 14h18
  4. Réel sur 80 bits...
    Par julson dans le forum Assembleur
    Réponses: 12
    Dernier message: 17/05/2004, 16h37
  5. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06

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