C++ プログラムから人間が読める (テキスト) ファイルに正確な浮動小数点値を保存および復元できる必要があります。sprinf で %A 形式を使用して正確な値を保存できますが、それを復元する方法が見つかりません。sscanf で %A 形式を使用してもうまくいきません。
私のサンプルプログラムは以下です。0X1.921FB4D12D84AP+1 が num1 の値として正常に出力されますが、その値を再度入力すると、num2 が 0 に設定されます。GCC 4.7.3 を使用して Cygwin 環境 (DLL バージョン 1.7.22) で実行しています。 G++ コンパイル オプションには以下が含まれます。 -std=gnu++11 -Wall -Wextra
#include <cstdio>
#include <string>
#include <iostream>
int main () {
double num1 = 3.1415926;
double num2;
std::string input;
int result;
printf("%lA\n", num1);
std::cout << std::endl;
std::cout << "Input:" << std::endl;
std::cin >> input;
std::cout << "Got: " << input << std::endl;
num2 = 0.0;
result = sscanf(input.c_str(), "%lA", &num2);
std::cout << "num2 is " << num2 << " and result is " << result << std::endl;
return 0;
}