我正在使用 sscanf 从文本文件中读取一些值,并使用 %lf 将它们存储为 double。
但值正在变得四舍五入。例如
读取内容:5.655035220-E02 存储了什么:0.0565504
我认为它与格式说明符“%lf”有关。
请按原样建议用于读取和存储值的正确格式说明符。
最佳答案
您的意思是您已经编写了这样的代码(感谢您下次提供您的代码,顺便说一句,它确实有助于理解正在发生的事情,而不必依赖模糊的线索):
#include <stdio.h>
int main(){
double v2;
sscanf("5.655035220e-02", "%lf", &v2);
printf("%f\n", v2);
return 0;
}
你得到的结果如下:
0.056550
(给出或取一个小数位。)
你的问题不在sscanf()
中的十进制到 double 的转换,这没问题,而是在printf()
的 double 到十进制的转换>。变量 v2
包含您扫描的数字的近似值。您根本没有请求 printf()
打印此近似值的许多数字。尝试:
printf("%.10f\n", v2);
0.0565503522
关于c++ - sscanf 的精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831623/