Bonjour,
Je voudrais savoir quelle serrait la bonne méthode pour transformer une variable numérique de type double en chaine de caractère.
Merci de votre aide
Bonjour,
Je voudrais savoir quelle serrait la bonne méthode pour transformer une variable numérique de type double en chaine de caractère.
Merci de votre aide
sprintf() si rien d'autre n'est disponible, snprintf() standard C99 sinon.
Sous Windows, snprintf() n'est pas disponible, mais _snprintf() l'est pour des vieux systèmes (attention, tu dois ajouter toi-même le zéro terminal à la fin de ton buffer) et _snprintf_s() est disponible avec Visual 2005.
En C++, on utilise les ostringstream.
Hmm,
J'ai du mal m'exprimer.
J'ai une variable de type double.
Contenant par exemple la valeur 445.60499.
Je voudrais transfoirmer cette variable de type double en char ou string. Quelle serrait la bonne façon de faire ?
Qu'entends-tu exactement par là, car Médinoc t'a donné la bonne solutione voudrais transfoirmer cette variable de type double en char ou string. Quelle serrait la bonne façon de faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part sprintf(buf, "%ld", var_double);
En effet, voir ce lien:sprintf() si rien d'autre n'est disponible
http://c.developpez.com/faq/c/?page=...RINGS_strtonum
Hello,
Envoyé par Trap DC'est un double, pas un long
Code : Sélectionner tout - Visualiser dans une fenêtre à part sprintf(buf, "%lf", var_double);
A+
Ok après test je vais peut être y arriver.
Je vous remercie beaucoup pour votre aide.
Bonne journée
Oui, mais sprintf ecris dans une chaine deja allouée !
Comment faire une fonction qui renvoie la taille nécéssaire pour ecrire le nombre ? Ou une a qui on passe un pointeur sur une chaine ?
Merçi !
En c99, tu es supposé avoir la fonction snprintf(), qui accepte un pointeur NULL et retourne toujours la taille nécessaire (mais il faut ajouter 1 pour le caractère nul).
Mais comme tu ne l'as pas toujours (et elle ne renvoit pas toujours la bonne valeur), tu peux utiliser des extensions:
- asprintf(), sous certains systèmes unixoïdes, fait un sprintf() et un malloc() en même temps
- _scprintf(), sous Win32, te donne la taille nécessaire.
Il faudrait faire comme ca ?
Ca marche pas ! ,je vais me pencher sur tes autres propositions !
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("Il faut : %ld caracteres\n", sprintf(NULL, "%d", double1 + double2 ));
C'est snprintf(), pas sprintf()... et il faut un compilateur (et une bibliothèque) C99.Envoyé par guimers
Mais c'est plutôt tordu comme manip. Personnellement, j'utiliserais un tableau de char d'une taile fixe raisonable, genre 32 ou 64 char...
Il y une formule il me semble liée au log qui donne le nombre de caractères nécessaires pour écrire le nombre.
nbcar = E(Ln(nb)/Ln(10))+1 ou Ln(nb) est le Log népérien du nombre cherché et E la partie entière d'un nombre.
[edit]J'ai complètement zappé le fait que c'est pour un nombre décimal, mes excuses
Ça ne marche que pour les nombres entiers
[/edit]
Bin je programme une calculette en GTK, donc j'aimerais pouvoir manipuler des chiffres grands, et avec de chiffres après la virgule sans problèmes.
Faudrait pas que le prog. plante juste parce que l'utilisateur rentre 1111111111111111111111111111,22222222222222222222222222222222 !
Quel est le nombre Max de chiffres avant et après la virgule ?
EDIT: je vais tester cette formule !
EDIT2: J'arrive pas trop moi : ((int)resultat) * (log(resultat) / log(10)) +1
J'obtient un nombre negetif abracadabrant ! ..
EDIT3: Je viens de voir ton edit ! Yen a pas une pour les decimaux ?
Dernière modification par Invité ; 14/10/2006 à 17h51.
Avec fgets(), pas de risque de plantage. Au pire il y a troncage, et la fonction clean()Envoyé par guimers
http://www.developpez.net/forums/sho...62&postcount=5
peut être modifiée pour le signaler dans son code retour.
Il y a tout un tas de constantes définies à cet usage dans <float.h>. J'avoue ne pas m'en souvenir précisément...Quel est le nombre Max de chiffres avant et après la virgule ?
Comme on contrôle l'entrée. On peut donc estimer quel sera le plus grand nombre possible et dimensionner la chaine de résultat en conséquence.
Pourquoi me parles-tu de fgets ? Perso, quand je fais du GTK, je ne m'en sert point !
...
J'ai essayé la calculette Window, ils limitent l'entrée texte à 32 caractères, c'est ce qu'il y a de plus simple !
OK, j'étais un peu à cheval sur 2 threads... Désolé.Envoyé par guimers
Mais le principe est là, il faut contrôler l'entrée.
Oui, c'est ce que je vais faire, limiter la saisie à 32 caractères, comme ca je fait un tableau fixe !
Merçi encore !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager