Conversion C++

Signaler
Messages postés
4
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
5 février 2007
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour à tous,
Je suis nouveau dans la programmation surtout en C++.
Mais pour un petit travail que j'ai à faire, j'aurais besoin de vous pour résoudre mon petit problème.

Voila : j'ai une valeur x en Double et je voudrais la convertir dans un tableau de char incluant la virgule.
Alors quelqu'un peu m'aider?????

stefpros

18 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Sujet déplacé vers http://www.cppfrance.com/
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Salut stepros,

Il y a plein d'exemple ici.
Tu devrais trouver ton bonheur.
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20989196.html
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Je ne vois pas de solution sans payer sur la page que tu indiques, à confirmer par d'autres.
Si tel est le cas, j'enlèverai ce lien.

sprintf() va impec pour les conversions de flottants en chaines, c'est d'ailleurs le seul usage que je lui concède.

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Si tu descend un peu dans le lien cité plus haut, tu verra des réponses (faut pas cliquer sur View Solution en fait).

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
4
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
5 février 2007

Merci Skirby pour le site très intéressant.
Mais malheureusement le site ne répond pas à ma question.
Je pourrais préciser que je travaille avec Visual Studio 2003.Net en C++, et mon problème en faite est de prendre une valeur double dans un TextBox et la combiner avec du String (CString, String ou char*, je ne sais plus) pour ensuite afficher le tout dans une autre TextBox.

stefpros
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
On peut même éviter sprintf() en créant sa propre fonction de conversion.
Voici un code source contenant plusieurs fonctions de conversion.
http://www.cppfrance.com/codes/IMPLEMENTATION-GESTION-STANDARD-CHAINES
La fonction StrFtoa() permet de convertir un double en chaine de caractères. Voici son prototype:
void StrFtoa(double value, char *string, long precision, char mode);
Son implémentation se trouve dans le fichier strlib_format.c
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Salut, ben c'est tout simple :

std::string float2string(const float f)
{
    std::istringstream iss(f);
    std::string dest;
    iss >> dest;

    return dest;
}

<hr size="2" width="100%" />TuRn3r
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Sauf que c'est un double et pas un flot désolé

<hr size="2" width="100%" />TuRn3r
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
turnerom> Qu'est censée faire ta fonction? Pour moi elle ne fait que retourner une chaine vide
Ca te semble pas plus logique d'utiliser ostringstream ici?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
racpp >


long integer;


/* Récupération de la partie entière */
integer = (long)value;
etc, etc..

ne me semble pas qu'on puisse conseiller ce code, rien ne garantit que la partie entière tiendra dans un long.
Une implémentation correcte de FloatToStr() ne me semble faisable qu'en asm.

ciao...
BruNews, MVP VC++
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
#include
#include <sstream>
using namespace std;

std::string double2string(const double f, size_t precision)
{
    std::stringstream iss;

    iss.precision(precision);
    iss << f;

    return iss.str();
}

int main()
{
    double nb=12.3456789012345678;

    cout << double2precision(nb, 20) << endl;
}

____________________

Affiche :  12.345678901234567

<hr size="2" width="100%" />TuRn3r
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
BruNews >> Je n'ai pas examiné le code. Je viens de le retrouver en espérant que ce sera utile. Vu le grand nombre de fonctions proposées, certes améliorables, je pense que c'est utile pour les débutants.
Messages postés
4
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
5 février 2007

Salut tout le monde,
Je tiens à vous remercier de toutes les suggestions que vous m'avez envoyer.
Mais comme on dit: "C'est en bûchant qu'on arrive à quelque chose".
alors avec vos suggestions j'ai bûché et j'ai trouvé.
Voici ce que j'ai trouvé pour convertir un double en tableau de char:

char buffer [_CVTBUFSIZE]
int longueur = 10; //exemple le longueur du double à récupéré
double source = 3.141516171819;

_gcvt (source; longueur; buffer);

voila le code

résultat : buffer ==> "3.14151617"

Encore merci pour votre aide.
stefpros
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Surtout avec des ; entre les arguments, ca doit bien marcher

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
on dira faute de frappe, he he

ciao...
BruNews, MVP VC++
Messages postés
4
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
5 février 2007

Félicitation vecchio56 et Brunews qui ont détectées les fautes de frappe que j'ai commise.
Nous pourrons dire :"voila de vrai experts qui ont pus déceler une erreur aussi complexe".
pour les autres... Remplacez " _gctv(source; longueur; buffer) " par " _gctv(source, longueur, buffer) "

merci !!!!

stefpros
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Si tu veux je peux aussi déceler tes fautes d'orthographe

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Voici une autre erreur "très complexe":
La fonction _gctv() n'existe pas. Il s'agit plûtot de _gcvt().
La rigueur est indispensable en programmation C/C++. La moindre omission peut nous faire perdre des heures (voire des journées).