2016-08-27 5 views
-2

私はプロジェクトで作業していますが、浮動小数点数を配列に格納する方法が見つかりません。私はこのような浮動小数点数を持つ.txtファイル(testfile.txt)を持っています浮動小数点数を配列C++に格納する方法

1.0 2.0 
3.0 4.0 
5.0 6.0 
7.0 8.0 
9.0 10.0 

そして私はそれを配列に保存したいと思います。しかし、私がこれをすると、すべての数字が整数に変換されます。私のプログラムは次のようになります。

#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; 
    } 
} 

、出力はこの

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

のようなものです誰かが私が間違ってやっている私に説明していただけますか?私は事前におかげで多くを試してみました!

+0

問題がどこにあるか説明できますか? – Amit

+0

"*私のすべての数字は' float' *に変換されています - ここでは、すべての数字が "整数"として出力されるので、すべての数値が 'int'に変換されると思います。私の前提が正しければ、 'std :: ostream'精度を小数点以下で出力するように設定しているだけで、数値自体は実際には' double'として格納されます。 – ArchbishopOfBanterbury

+3

'std :: fixed'と' 'std :: setprecision()'](http://en.cppreference.com/w/cpp/io/manip/setprecision)を使って10進数の出力を制御できます。 –

答えて

2

あなたの問題は、番号の保存方法ではありません。

数字は正しく保存されます。

あなたの問題は番号の表示方法です。

数字を印刷する方法は間違っているので、表示される数字は間違っているので、数字に問題があると思われます。

デフォルトでは、cout << my_double_variableは小数点なしでダブルを表示します。

最初の結果として、 "C++ coutをダブル" 利回り以下のStackOverflowのQ & AのためのシンプルなGoogle検索:これによると

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

、解決策はNがあなたの所望の精度ですcout.precision(N);を使用することです。

少し印刷:あなたは間違ってプリントアウトに惑わされることなく、ものを印刷するために、任意のコードを記述する必要がなく、あなた自身のためにこれを見ているだろうデバッガを使用していた場合、およびすべてなし野生のガチョウ追う。だから、私の助言は:デバッガを使用して開始します。

関連する問題