J'essaie d'obtenir une valeur (tout numéro décimal) d'un texte en C ++. Mais j'ai un problème et je ne pouvais pas le résoudre thefile.txt: p> lorsque j'exécute le code ci-dessus, < / p> mais je veux p> Que dois-je faire? P> EDIT: je ne sais pas vouloir imprimer des et b. Je veux juste qu'ils obtiennent les valeurs exactes.net p> p>
3 Réponses :
vous ne pouvez pas. P>
a Tout d'abord, vous devez passer à Puis, pour la sortie, soyez prudent pour Spécifiez la précision que vous voulez . P>
S'il vous plaît restez au courant des faiblesses de point flottant et envisagez de coller avec des chaînes, en fonction de ce que vous faites avec ces données. P> float code>
ne peut que vous donner six (ish) décimal chiffres significatifs em>. Les valeurs de votre fichier, après la conversion de la chaîne, ne peuvent pas être conservées dans un float code>. P>
double codage> a >, sinon vous n'aurez même pas une variable avec la valeur numérique complète. P>
Il y a deux choses principales que je vois dans votre code.
Ce code fonctionnera pour vous. P>
#include <iostream> #include <fstream> #include <sstream> #include <string> int main() { std::ifstream infile("newfile.txt"); double a, b; std::cout.precision(11); while (infile >> a >> b) { // process pair (a,b) } std::cout << a << " " << b; }
Cela ne montre pas toute valeur lorsque je imprime. Mais je ne veux pas montrer, je veux juste qu'ils obtiennent les valeurs exactes. Ont-ils les valeurs exactes si j'utilise le double?
@BayBayBay Essayez-le et découvrez-le?
Vous devez lire vos entrées dans une chaîne, puis les convertir en double (en fonction de suffisamment de précision dans le flotteur sur votre ordinateur). Vous pouvez afficher directement des chaînes. Une réponse possible est ici .
string word; openfile >> word; double lol = atof(word.c_str());
Pourquoi vous-même quand iOSTREAMS le fera pour vous? En code que l'OP est écrit?
@Shafiqaiqbal je n'ai pas eu tout ce que tu as dit
Votre ordinateur a-t-il suffisamment de précision dans un
float code> pour le faire? Êtes-vous sûr?
@LighessRacesinorbit Je ne suis pas sûr de rien. Je ne veux pas imprimer a et b. Je veux juste a et b obtenir toutes les valeurs. S'ils obtiennent déjà toutes les valeurs et s'il apparaissent d'une manière courte à cause de l'impression, c'est bon. pouvez-vous me dire ?
@Nathanoliver j'ai accepté votre petite réponse. Merci mon ami
@Nathanoliver aussi quel type dois-je utiliser? double ou flotter?
Pour flotter A, B;
Vous pouvez vérifier la valeur réelle de la variable à l'aide d'un débogueur i>. Mais pour l'impression, le dupliquée répond bien.
@Yksisarvinen merci. aussi flotter a, b; est correct? ou devrais-je utiliser un double?
@Nathanoliver vraiment? Je pensais qu'un flotteur unique de précision de l'IEEE 754 ne garantissait que des chiffres significatifs de six-ish de six-ish (sauf contraintes de dégâts sur les pouvoirs de deux)
Qu'est-ce que "Cout.net"?
@LightnessRacesinorbit tu es correct. Je ne sais pas ce que je pensais. Ils auraient besoin d'un double pour une précision complète.
@Nathanoliver presque le week-end ....
@LightnessRacesinorbit Tu m'as fait confondre ...
@Nathanoliver tu m'as fait confondre ...
@Yksisarvinen tu as fait de moi confondre ...
@BayBayBay Votre commentaire (écrit trois fois!) N'ajoute rien à la discussion.