【发布时间】:2013-08-12 23:45:25
【问题描述】:
我需要能够从我的 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;
}
【问题讨论】:
-
你试过“%a”(小写,没有l)吗? (哎呀:保持 l)
-
是的,%la 或 %lA 都不起作用。是的,l 是必需的,因为 num2 是双精度数。
标签: c++ floating-point