[c++] Cast double -> string
Résolu/Fermé
bobi14
Messages postés
67
Date d'inscription
vendredi 23 février 2007
Statut
Membre
Dernière intervention
4 novembre 2007
-
25 avril 2007 à 09:28
codeurfou - 1 sept. 2017 à 15:34
codeurfou - 1 sept. 2017 à 15:34
A voir également:
- C++ double to string
- Double ecran - Guide
- Whatsapp double sim - Guide
- Qwerty to azerty - Guide
- Double appel - Guide
- Double authentification google - Guide
4 réponses
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 novembre 2024
7 805
Modifié le 1 sept. 2017 à 18:56
Modifié le 1 sept. 2017 à 18:56
La solution C++ c'est de passer par un ostringstream.
Ce qui donne :
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/ios/ios_base/precision/
Sinon il reste les traditionnels sprintf du C, qui passent par un buffer.
donne à l'éxecution :
La vraie question, c'est as-tu besoin de passer par un buffer ou un
Bonne chance
#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; }
Ce qui 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/ios/ios_base/precision/
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
std::ostringstream, pour ne pas directement régler la précision de ton
std::ostream(ce qui inclue en particulier
std::cout,
std::cerr, les
std::ofstreamet les
std::ostringstream).
Bonne chance
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
25 avril 2007 à 09:35
25 avril 2007 à 09:35
Salut,
Oui c'est tout à fait possible avec par exemple la fonction sprintf (oui j'adore cette fonction).
Oui c'est tout à fait possible avec par exemple la fonction sprintf (oui j'adore cette fonction).
sprintf(ton_string,"%f",ton_double);
bobi14
Messages postés
67
Date d'inscription
vendredi 23 février 2007
Statut
Membre
Dernière intervention
4 novembre 2007
8
25 avril 2007 à 09:43
25 avril 2007 à 09:43
Merci pour ta réponse aussi rapide.
Est-ce que ça marche si je fais:
string variable=(string)variable_en_double;
Est-ce que ça marche si je fais:
string variable=(string)variable_en_double;
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
25 avril 2007 à 10:33
25 avril 2007 à 10:33
Et bah mamiemando t'es un fou du C++ toi ^^
Sinon
Sinon
string variable=(string)variable_en_double;ne devrait pas marcher je pense pas qu'on puisse caster un double en char* par exemple.
bobi14
Messages postés
67
Date d'inscription
vendredi 23 février 2007
Statut
Membre
Dernière intervention
4 novembre 2007
8
25 avril 2007 à 10:43
25 avril 2007 à 10:43
Merci bien pour vos réponses et surtout "mamiemando" pour ton code super bien détailé...
1 sept. 2017 à 15:34