2014-11-08 3 views
-1

у меня есть файл с матрицей пХп, например, я получил эти цифры:неправильные номера для чтения из файла C++

3,162277660168379 4,110960958218893 7,58946638440411 -1.110223024625157e-016 +6,715653356152327 +6,224264086189961 -5.551115123125783e-016 -1.332267629550188e -015 +3,107818621696872

и получил код:

std::ifstream in("R.txt"); 
std::string line; 
float B[4][4]; 
int u = 1, y = 1; 
while (std::getline(in, line)) 
{ 
    float value; 
    int y = 1; 
    std::stringstream ss(line); 
    while (ss >> value) 
    { 
     B[u][y] = value; 
     cout << setprecision(16) << B[u][y] << " "; 
     ++y; 
    } 
    cout << endl; 
    ++u; 
} 

и получить этот ответ, когда я пытаюсь вывести в моей командной строке:

3,162277698516846 4,110960960388184 7,589466571807861 -1.110223024625157e-016 +6,715653419494629 +6,224264144897461 -5.551115123125783e-016 -1.332267629550188e-015 3,107818603515625

Имеет any1 любая идея, почему мои номера неправильно читаемые? от 8-й цифры? :) Благодаря

+2

потому, что вы читаете двойные значения в значения с плавающей точкой, так что они скруглятся? –

+2

Кроме того, индексы массивов основаны на нуле. –

ответ

4

Вместо того, чтобы использовать поплавок использовать двойным, потому что поплавок будет работать только ДО 8 знаков после запятой

Смежные вопросы