[C] problème de onversion char -> float
Résolu
Explication du problème:
je lis dans un fichier txt exporté depuis Excel et je désire récupéré les réels ( ex: "132.2456")
J'arrive ss problème à découper mon fichier en ligne puis en nombre
Pour la conversion, j'utilise la fonction sscanf vu que c la seule que j'ai trouvé, mais je vois apparaître des caractère fantôme à l'affichage et lors de calcul...
Je m'explique: j'ai ma chaîne "132.2456" qui se termine correctment par un \0
mais apres la conversion, le float correspond est " 132.245602"
vu que j'ai besoin de faire des calculs exacts cette approximation à la fin est inadmissible....
J'ai developpé ma propre fonction sscanf mais meme topo.
J'ai allongé la chaîne pour avoir les 6 décimales apres la virgule, mais meme topo....
Je n'arrive pas à comprendre d'ou vient le probleme...
J'utilise actuellement la plateforme Dev C++ sous Windows.
Merci de l'aidde que vous pourrez m'apporter car la je commence à criser de ces caractères fantômes..
je lis dans un fichier txt exporté depuis Excel et je désire récupéré les réels ( ex: "132.2456")
J'arrive ss problème à découper mon fichier en ligne puis en nombre
Pour la conversion, j'utilise la fonction sscanf vu que c la seule que j'ai trouvé, mais je vois apparaître des caractère fantôme à l'affichage et lors de calcul...
Je m'explique: j'ai ma chaîne "132.2456" qui se termine correctment par un \0
mais apres la conversion, le float correspond est " 132.245602"
vu que j'ai besoin de faire des calculs exacts cette approximation à la fin est inadmissible....
J'ai developpé ma propre fonction sscanf mais meme topo.
J'ai allongé la chaîne pour avoir les 6 décimales apres la virgule, mais meme topo....
Je n'arrive pas à comprendre d'ou vient le probleme...
J'utilise actuellement la plateforme Dev C++ sous Windows.
Merci de l'aidde que vous pourrez m'apporter car la je commence à criser de ces caractères fantômes..
A voir également:
- [C] problème de onversion char -> float
- Coco char - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Afficher un float avec 2 chiffres après la virgule en c - Forum C
- Can't multiply sequence by non-int of type 'float' - Forum Python
- If char ✓ - Forum Programmation
3 réponses
bonjour
float 32 bits portée : 3.4 * (10**-38) to 3.4 * (10**+38)
au delà de 6 chiffres significatif, le type float est aproximatif
peut être que le type double (flotant double précision)
serait utile ?
a+
float 32 bits portée : 3.4 * (10**-38) to 3.4 * (10**+38)
au delà de 6 chiffres significatif, le type float est aproximatif
peut être que le type double (flotant double précision)
serait utile ?
a+
Ca me semble vraiment bizarre que ton sscanf se foire.
Passe-tu bien la bonne chaîne ? La scannes-tu corrctement (tu sais l'histoire des doubles simple précision et double précision..) ?
" 3121.13 " ---> se scanne avec " %lf " en pensant bien à mettre les espace entre les guillemets et le %lf pour faire sauter les espaces et/ou les tabulations.
Si ce n'est rien de tout ça est tu sûr que tu ne tape pas dans cette zone mémoire par erreur ?
Bonne chance
Passe-tu bien la bonne chaîne ? La scannes-tu corrctement (tu sais l'histoire des doubles simple précision et double précision..) ?
" 3121.13 " ---> se scanne avec " %lf " en pensant bien à mettre les espace entre les guillemets et le %lf pour faire sauter les espaces et/ou les tabulations.
Si ce n'est rien de tout ça est tu sûr que tu ne tape pas dans cette zone mémoire par erreur ?
Bonne chance