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

C++ Discussion :

Limiter la taille d'un nombre


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut Limiter la taille d'un nombre
    Bonjour tout le monde,
    je suis entrain de chercher comment spécifier la taille d'un float ( le nombre de chiffres significatifs + le nombre de chiffres après la virgule).
    je veux écrire ces chiffres dans un fichier texte en limitant la taille de chaque nombre.
    j'ai cherché sur les forums mais aucun résultat.

    Quelqu'un peut m'aider????

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier, "%2.3f", mon_float);
    2 avant et 3 après la virgule

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par Trademark Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier, "%2.3f", mon_float);
    2 avant et 3 après la virgule
    Il n'y a pas un moyen de faire ceci en C++ avec les flux plutôt que d'utiliser une méthode plutôt orienté C ?

    Je pensais faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float = monFloat;
    int arrondi = monFloat*1000; // 10^k où k est le nombre de chiffre après la virgule
    int arrondi %= 10000000; //10^k où k est le nombre de chiffre que tu veux au total.
    monFloat = arrondi(float)/1000; //et voilà, le tour est joué.

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Faut voir avec les manipulateurs de flux : http://fr.wikibooks.org/wiki/Program...etw.28width.29

    Mais pour le coup, c'est vite assez lourd. Il y a boost::format pour alléger.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre actif
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut
    j'ai essayé ce code mais j'arrive pas à résoudre mon problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float = monFloat;
    int arrondi = monFloat*1000; // 10^k où k est le nombre de chiffre après la virgule
    int arrondi %= 10000000; //10^k où k est le nombre de chiffre que tu veux au total.
    monFloat = arrondi(float)/1000; //et voilà, le tour est joué.
    Mon but est d'arriver à convertir une ligne de texte en un tableau de réels.
    Voici un exemple d'une ligne de fichier texte:
    102.2360 0.0650 6.09 52.0 0.087 1.0 84.098
    ces nombres sont séparés avec un espace.
    Voila la fonction que j'ai écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    int transfert(string ch ,float* tab)
    {
    int n=0;
    int p=strchr((const char*)ch.c_str(),' ')- ch.c_str();
    while(p =!0)
    {
    string ch1=ch.substr(0,p-1);
    tab[n]=atof(ch1.c_str());
    n=n+1 ;
    ch=ch.substr(0,p);
    p=strchr((const char*)ch.c_str(),' ')- ch.c_str();
    }
    tab[n+1]=atof(ch.c_str());
    return n;
    }
    Quelqu'un peut me corriger ce code !
    Merci d'avance

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Pense déjà à indenter ton code.

    Ensuite, pourquoi utiliser un string pour ensuite faire maString.c_str() à presque chaque instruction?

    Tu te complique inutilement la vie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::stringstream flux(maString); // #include <sstream>
    float monFloat;
    while(flux >> monFloat) //s'arrête dès qu'il ne peut plus lire de float
    {
                //traitement du float.
    }
    //fin de la lecture
    Tu utilises aussi un tableau de float, où fais-tu l'allocation avec new ?
    S'il est déjà alloué, où passes-tu la taille physique du tableau ?

    Pourquoi ne pas utiliser un vecteur :
    http://www.cplusplus.com/reference/stl/vector/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::vector<float> monVecteur;
    monVecteur.push_back(monFloat);//place mon float à la fin du tableau
    /!\ Si tu connais la taille à l'avance, bien utiliser la méthode reserve(taille);

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Il n'y a pas un moyen de faire ceci en C++ avec les flux plutôt que d'utiliser une méthode plutôt orienté C ?
    Jette un œil sur ce fil, et bosse avec les ostringstream.

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par oodini Voir le message
    Jette un œil sur ce fil, et bosse avec les ostringstream.
    Davidbrcz a déjà donné un lien sur les opérateurs de flux.

Discussions similaires

  1. limiter la taille d'un texte en nombre ligne
    Par pimpmyride dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 05/06/2007, 15h33
  2. Limiter la taille d'une ou plusieurs bases de données
    Par Thierry8 dans le forum Administration
    Réponses: 7
    Dernier message: 12/03/2006, 23h51
  3. Feuille de style, faut-il limiter leurs tailles?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 30/01/2006, 07h05
  4. [ Eclipse2.1 ][ Plugin ] limiter la taille des boutons
    Par whilecoyote dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/11/2005, 16h08
  5. [Tomcat][Jsp][Upload]Limiter la taille d'un upload...
    Par Titom dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h33

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