2016-08-27 34 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)來控制十進制數字的輸出。 –

回答

2

你的問題不是你如何存儲數字。

數字得到存儲就好了。

你的問題是你如何查看數字。

你打印數字的方式是錯誤的,所以你看到的數字是錯誤的,所以你認爲數字有問題。

默認情況下,cout << my_double_variable會呈現您的雙精度不帶小數。

一個簡單的谷歌搜索「C++的cout雙」產率作爲第一結果計算器Q &甲以下:

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

根據其,所述解決方案是使用cout.precision(N);其中N是你所需的精確度。

小打印:如果你使用,你會看到自己這一點調試器,而不需要編寫任何代碼打印的東西,而不會被錯誤的打印輸出被誤導,並沒有所有的野鵝追逐。所以,我的建議是:開始使用調試器。

相關問題