2016-08-27 15 views
-2

Ich arbeite mit einem Projekt, aber ich finde keine Möglichkeit, Float-Nummern in einem Array zu speichern. Ich habe eine .txt-Datei (testfile.txt) mit Float-Zahlen, wie dieseSo speichern Sie Gleitkommazahlen im Array C++

1.0 2.0 
3.0 4.0 
5.0 6.0 
7.0 8.0 
9.0 10.0 

Und ich mag es in ein Array speichern. Aber wenn ich das mache, werden alle meine Zahlen in Ganzzahlen umgewandelt. Mein Programm sieht wie folgt aus:

#include <fstream> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    double number[10]; 

    ifstream infile; 
    infile.open("testfile.txt"); 
    for(int a=0; a<10; a=a+1) 
    { 
     infile >> number[a]; // Reading from the file 
     cout << number[a] << endl; 
    } 
} 

Und der Ausgang ist wie dieser

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

Kann jemand mir bitte erklären, was ich falsch mache? Ich habe viel versucht, danke im Voraus!

+0

Können Sie erklären, wo das Problem liegt? – Amit

+0

"* alle meine Zahlen werden in' float' * "umgewandelt - Ich gehe hier davon aus, dass Sie wirklich meinen, dass alle Zahlen in" int "konvertiert werden, da sie in der Ausgabe als Ganzzahlen gedruckt werden. Wenn meine Annahme hier korrekt ist, dann setzen Sie die Genauigkeit von "std :: ostream" nicht so, dass sie mit Dezimalzahlen gedruckt werden - die Zahlen selbst werden in der Tat als "doppelt" gespeichert. – ArchbishopOfBanterbury

+3

Sie können 'std :: fixed' und [' std :: setprecision() '] (http://en.cppreference.com/w/cpp/io/manip/setprecision) verwenden, um die Ausgabe von Dezimalziffern zu steuern. –

Antwort

2

Ihr Problem ist nicht, wie Sie die Nummern speichern.

Die Zahlen werden gut gespeichert.

Ihr Problem ist, wie Sie die Zahlen anzeigen.

Die Art, wie Sie die Zahlen drucken, ist falsch, deshalb sind die Zahlen, die Sie sehen, falsch, also denken Sie, dass etwas mit den Zahlen falsch ist.

Standardmäßig wird cout << my_double_variable Ihr Double ohne Dezimalen darstellen.

Eine einfache Google-Suche "C++ cout doubelt" Ausbeute als erstes Ergebnis des folgend Stackoverflow Q & A: an die

How do I print a double value with full precision using cout?

Entsprechend ist die Lösung cout.precision(N); zu verwenden, wo N gewünschte Präzision .

Der kleine Druck: Wenn Sie einen Debugger haben Sie verwendet diese für sich selbst gesehen hätte, ohne die Notwendigkeit, einen Code zu schreiben Sachen zu drucken, ohne durch die falschen Ausdrucke die Irre geführt werden, und ohne die ganze wilde Gans jagt. Also, mein Rat ist: starten Sie mit einem Debugger..