Можно ли в 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;
}
Я понимаю, почему потеря точностииногда.Однако, если я напечатаю значение с достаточным количеством цифр, я смогу прочитать одно и то же значение.
Существует ли заданный набор флагов, который гарантированно никогда не потеряет точность?Будет ли это поведение переносимым на разные платформы?