[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
- Youtube to mp4 conconventer - Forum Vidéo/TV
- Cam to cam - Forum Internet / Réseaux sociaux
- Qwerty to azerty - Guide
4 réponses
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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