begin process at 2012 05 28 23:01:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Conversion de string vers (long) double


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion de string vers (long) double

dimanche 14 février 2010 à 15:03:06 | Conversion de string vers (long) double

removebeforeflight

Bonjour à tous,

Pour les besoins, d'une application, je doit convertir des string (des coordonnées latitude/longitude) vers des valeurs numériques, avec une précision d'au moins 10 chiffres significatifs. Mais tous mes essais n'ont rien donnés, que ça soit via la fonction atol ou via une fonction que j'ai codé moi même, je suis toujours bridé a une précision de 6 chiffres significatifs (donc en gros, ça va de 179.999 à 0.00999999). Je cherche donc comment faire pour obtenir suffisament de précision.?

Ci dessous, le code de conversion que j'ai tenté de faire, mais qui ne me donne pas satisfaction (bridé a 6 chiffres significatifs, comme avec atol) :
Code C/C++ :
long double stringToDouble(string str){
	int taille;
	double virgule;
	long double sortie=0;
	virgule=pow(10,str.find(".")-1);
	str.erase(str.find("."),1);
	cout << virgule << endl;
	taille = str.size();
	cout << taille << endl;
	for(int k=0;k<taille;k++){
		sortie=sortie + atoi(str.substr(k,1).c_str())*virgule;
		virgule=virgule/10;
		cout << "k = " << k << " virugle = " << virgule << " sortie : " << sortie << " valeur : " << atoi(str.substr(k,1).c_str()) <<endl;
		cout << "intermédiaire : " << atoi(str.substr(k,1).c_str())*virgule << endl;
	}
	return sortie;
}


Merci pour votre aide, je commencer à m'arracher les cheveux la ;-) .
dimanche 14 février 2010 à 23:08:16 | Re : Conversion de string vers (long) double

Lucky92

Réponse acceptée !
Bonjour,

J'éspère que le code suivant va t'éclairer sur la façon de manipuler les chaînes et les nombres en c++.

Code C/C++ :
/*____________________________________________________________________
*/
#include <iostream>
#include <iomanip> //pour std::setprecision
#include <sstream> //pour std::istringstream
#include <string>
#include <cmath>
/*____________________________________________________________________
*/
double stringToDouble( std::string str )
{
	std::istringstream iss( str ) ;
	double d ;
	iss >> d ;
	return d ;
}
/*____________________________________________________________________
*/
int main()
{
	double pi = stringToDouble( "3.1415926535897932384626433832795" ) ;
	std::cout << std::setprecision( 15 ) << pi << std::endl ;
	//sortie : 3.14159265358979

}
/*____________________________________________________________________
*/


@++

Lucky92.
lundi 15 février 2010 à 09:41:35 | Re : Conversion de string vers (long) double

removebeforeflight

Merci beaucoup pour ta réponse.

Je crois que je peux en conclure que mon algo était bon... c'est juste à priori mon appel d'affichage qui n'était pas bon (donc sans utiliser setprecision(15), l'affichage de la valeur est automatiquement tronqué à 6 chiffres significatifs ?).

Merci encore !


Cette discussion est classée dans : string, str, double, virgule, sortie


Répondre à ce message

Sujets en rapport avec ce message

Probleme String -> double et long [ par lebalrog ] Salut tout le monde!J'ai un prob urgent a resoudre (tres urgent meme)!je fais :ficin >> ligne;long r=atol(ligne);double a=atof(ligne);avec ligne="0,12 Convertion d'un unsigned long Double en string [ par yves_r ] Bonjour, J'ai besoin de convertir le résultat d'un calcul en string (char *). Si j'utilise sprintf( s, "%Ld", mon_double), j'obtient une chaine string.h, c_str() & char* [ par MyXiLo ] Bonjour,Il y a un petit quelque chose que je ne comprends pas avec les std::string de string.hstd::string Pouet="LALALALa";pr Casts [ par wismerhill__ ] Bonjour, je debute en c++ et j'aimerais savoir comment faire pour caster une chaine std::string en std double.Je m'explique, en vba il est possible de Trouver un string avant un autre string [ par gm__ ] Salut!J'aimerais savoir comment faire pour verifier si  un string se trouve just avant un autre.J'utilise string::rfind() pour chercher à l'envers, se Arrondir un double [ par ketchupy45 ] Bonjour, est ce que quelqu'un pourrait m'indiquer comment m'arrondir un double à 2 chiffres derrière la virgule ?Je ne cherche pas à afficher le chiff conversion double en string [ par bouba ] Bonjour, je réalise une fonction qui doit calculer le nombre de caractères d'un doubleexemple:-7.56 -> 5 caractèreExiste t'il une fonction qui fasse c problème probablement lié aux références [ par fanfanfx ] Bonjour, je galère depuis quelques jours sur un bout de code. Pour être bref voici le code qui marche ne marche pas: [code=cpp]void maFonction(const conversion string et char, probleme [ par flowneo ] Bonjour, soit le code suivant, qui convertit une chaine string en char: #include #include #include using namespace std; int main (){ string com


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales