Rechercher : dans
Par :

[c++] Cast double -> string

Dernière réponse le 25 avr 2007 à 10:43:08 bobi14, le 25 avr 2007 à 09:28:43 
 Signaler ce message aux modérateurs

Bonjour,

Je souhaiterai savoir s'il est possible de caster un double en string.
Si oui est-ce que les chiffres aprés la virgule seront pris en compte?


Merci d'avance pour vos réponses.

Meilleures réponses pour « [c++] Cast double > string » dans :
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Créer une identité visuelle pour l'entreprise VoirL'identité visuelle est au cœur des stratégies de communication. Cette "carte d'identité graphique" véhicule l'image de l'entreprise grâce à différents supports visibles (ex : enveloppes, dossiers de presse). C'est un moyen d'attirer l'attention...
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

Stupeflip, le 25 avr 2007 à 09:35:17

Salut,

Oui c'est tout à fait possible avec par exemple la fonction sprintf (oui j'adore cette fonction).

sprintf(ton_string,"%f",ton_double);

Qui n'a rien n'a rien (Proverbe Norvillois)

Répondre à Stupeflip

3

bobi14, le 25 avr 2007 à 09:43:51

Merci pour ta réponse aussi rapide.

Est-ce que ça marche si je fais:

string variable=(string)variable_en_double;

Répondre à bobi14

2

mamiemando, le 25 avr 2007 à 09:39:49
  • +5

La solution C++ c'est de passer par un ostringstream.

#include <iostream>
#include <sstream>

int main(){
    double x=1.23456789;
    std::string s;
    {
        std::ostringstream oss;
        oss << x;
        s = oss.str();
    }
    std::cout << "x = " << x << " s = " << s << std::endl;
    return 0;
}

donne :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out
x = 1.23457 s = 1.23457

Tu peux éventuellement régler le nombre de décimales qui vont apparaître à priori le nombre de décimales est réglable sur oss
http://www.cplusplus.com/reference/iostream/ios_base/precision.html

Sinon il reste les traditionnels sprintf du C, qui passent par un buffer.
#include <iostream>
extern "C"{
    #include <stdio.h>
}

int main(){
    double x=1.23456789;
    std::string s;
    char buffer[100];
    sprintf(buffer,"%.9lf",x);
    s = buffer;
    std::cout << "x = " << x << " s = " << s << std::endl;
    return 0;
}

donne à l'éxecution :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out
x = 1.23457 s = 1.234567890

La vraie question, c'est as-tu besoin de passer par un buffer ou un ostringstream, pour ne pas directement régler la précision de ston std::ostream (ce qui inclue en particulier std::cout, std::cerr, les std::ofstream et les std::ostringstream)

Bonne chance

Répondre à mamiemando

4

Stupeflip, le 25 avr 2007 à 10:33:39

Et bah mamiemando t'es un fou du C++ toi ^^

Sinon

string variable=(string)variable_en_double;
ne devrait pas marcher je pense pas qu'on puisse caster un double en char* par exemple.
Qui n'a rien n'a rien (Proverbe Norvillois)

Répondre à Stupeflip

5

 bobi14, le 25 avr 2007 à 10:43:08

Merci bien pour vos réponses et surtout "mamiemando" pour ton code super bien détailé...

Répondre à bobi14
Collection CommentÇaMarche.net