Conversion char -> double

titpeste Messages postés 16 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 28 juin 2004 - 28 juin 2004 à 15:53
cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 - 29 juin 2004 à 11:20
Bonjour,
je manipule des doubles avec 20 chiffres a peu pres derriere la virgule.
Ils sont stockés dans des chaines de caracteres.
Mais lorsque je fais un atof pour les convertir en double, je perd toute la precision.
Y a t'il une fonction pour me permettre de les convertir sans perdre la plupart des chiffres derriere la virgule?
Merci d'avance

SoFie

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
28 juin 2004 à 16:16
Tu peux toujours coder toi même la fonction de conversion en parcourant ta chaine caractère par caractère, car à part atof, je ne vois pas d'autres fonctions...

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
titpeste Messages postés 16 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 28 juin 2004
28 juin 2004 à 18:15
merci darksidious
mais ca me parait vraiment bizarre qu'il n'y ait pas deja des fonctions prevues pour ca...
j'ai vu par exemple un setPrecision pour l'affichage...
Je cherche, je cherche mais je trouve pas...
Effectivement, au bout d'un moment je me resoudrai à coder moi même la fonction :(
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
28 juin 2004 à 20:48
Pas la peine de te resoudre a quoi que ce soit, un double ne stocke que 20 chiffres maxi en precision, parties entiere et fractionnaire comprises.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 1
29 juin 2004 à 11:20
Salut

#include <stdlib.h>

double strtod(const char*, char**) ;

Converti la première chaîne en un double et place le second pointeur vers la partie qui n'a pas été analysée.

ex:

char* ep ;
double a = strtod("123.456salut", &ep) ;

a contient 123.456
ep pointe vers "salut"

La précision n'est toujours pas infinie mais tout de même plus qu'avec atof.

A++

Chouchou
0