Je rencontre des problèmes lorsque j'essaie de lire un nombre flottant à partir d'un fichier. Je dois lire 3 numéros de flotteur donnés en ligne comme celui-ci:
v -30,50889491515995 -31,95820181187489 0
(je fais un analyseur à partir d'un fichier .obj de Rhinocéros)Comment lire le nombre flottant avec plus de chiffres en C++?
Voici mon code (avant cette Je lis une chaîne pour voir si c'est un 'v'):
fstream f(name.c_str());
...
f>>p.x>>p.y>>p.z;
nom est une chaîne lue auparavant à partir de l'entrée standard.
P est un struct:
typedef struct Point{
double x;
double y;
double z;
}Point;
Le problème est que les données readed est:
-30,5089 -31,9582 0
au lieu de
-30,50889491515995 -31,95820181187489 0
Il arrondit à 4 décimales, et Je ne veux pas ça!
J'ai essayé de lire avec fscanf mais je ne peux pas lui envoyer un objet fstream. Quelque chose comme ceci:
fscanf(f,"%f %f %f",p.x,p.y,p.z);
J'ai essayé aussi, mais cela n'a pas fonctionné:
f>>setprecision(10)>>fixed>>p.x>>p.y>>p.z;
Toute idée de la façon d'éviter cela? J'ai besoin de plus de précision dans les coordonnées du vertex!
Merci beaucoup.
Peut-être que vous devriez expliquer pourquoi n'a pas fonctionné dans le deuxième cas –
Il a lu la même chose! (tours à 4 décimales) – fern17
Comment déterminez-vous la précision des variables? –