我需要能够从我的 C++ 程序中将精确的浮点值保存和恢复到人类可读的(文本)文件中。我可以将 %A 格式与 srinf 一起使用来保存确切的值,但我无法找到恢复它的方法。将 %A 格式与 sscanf 一起使用对我不起作用。
我的示例程序如下。它成功地将 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;
}