Я записал некоторые параметры (все типа double
) в файл для использования при выполнении некоторых сложных вычислений. Я записываю параметры в файлы примерно так:
refStatsOut << "SomeParam:" << value_of_type_double << endl;
где refStatsOut
- это параметр ofstream
. Существует четыре таких параметра, каждый из которых имеет тип double
. То, что я вижу записанным в файл, отличается от его фактического значения (с точки зрения потери точности). Например, если value_of_type_double
имел значение -28.07270379934792, то, как я вижу в файле, я вижу -28.0727.
Кроме того, после того, как эта статистика была вычислена и записана, я запускаю разные программы, которые используют эту статистику. Файлы считываются, и значения первоначально сохраняются как std::strings
, а затем преобразуются в double
с помощью функций atof
. Это приводит к значениям, которые я показал выше, и разрушает вычисления далее.
У меня такой вопрос:
1. Есть ли способ повысить разрешение, с которым можно записывать значения (типа double
и т. П.) В файл, чтобы НЕ потерять какую-либо точность?
2. Может ли это быть проблемой преобразования std::string
в double
с atof
? Если да, то какую еще функцию я могу использовать для решения этой проблемы?
P.S: Пожалуйста, дайте мне знать, если некоторые детали в этом вопросе не ясны. Я постараюсь обновить их и предоставить более подробную информацию.