Conversion C++

stepros Messages postés 4 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 5 février 2007 - 3 févr. 2007 à 02:32
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 5 févr. 2007 à 14:08
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

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
3 févr. 2007 à 04:15
Sujet déplacé vers http://www.cppfrance.com/
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
3 févr. 2007 à 08:01
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 févr. 2007 à 11:52
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++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 févr. 2007 à 11:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stepros Messages postés 4 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 5 février 2007
3 févr. 2007 à 15:27
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
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 févr. 2007 à 15:31
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
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
3 févr. 2007 à 16:13
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
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
3 févr. 2007 à 16:14
Sauf que c'est un double et pas un flot désolé

<hr size="2" width="100%" />TuRn3r
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 févr. 2007 à 16:41
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 févr. 2007 à 16:48
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++
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
3 févr. 2007 à 18:19
#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
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 févr. 2007 à 23:48
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.
0
stepros Messages postés 4 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 5 février 2007
4 févr. 2007 à 21:13
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 févr. 2007 à 21:25
Surtout avec des ; entre les arguments, ca doit bien marcher

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 21:52
on dira faute de frappe, he he

ciao...
BruNews, MVP VC++
0
stepros Messages postés 4 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 5 février 2007
5 févr. 2007 à 03:03
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
5 févr. 2007 à 10:06
Si tu veux je peux aussi déceler tes fautes d'orthographe

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
5 févr. 2007 à 14:08
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).
0
Rejoignez-nous