Написать поплавок с полной точностью в C ++

в C ++, могу ли я написать и прочитать обратно поплавок (или двойной) в текстовом формате без потери точности?

Рассмотрим следующее:

float f = ...;
{
    std::ofstream fout("file.txt");
    // Set some flags on fout
    fout << f;
 }
 float f_read;
 {
     std::ifstream fin("file.txt");
     fin >> f;
  }
  if (f != f_read) {
      std::cout << "precision lost" << std::endl;
  }

Я понимаю, почему точность потеряна иногда. Однако, если я распечатаю значение достаточно цифр, я должен иметь возможность прочитать то же самое значение.

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

5
задан luispedro 6 September 2011 в 17:51
поделиться