【发布时间】:2016-06-01 08:08:29
【问题描述】:
我需要一些帮助。我必须将 char * 转换并存储为 double 或 long double 而不会丢失精度。
确实,我尝试使用 strtold 和 atof 方法(也有 strtold),但这些方法是对值进行四舍五入。
例如:
char * key ="39.7519707";
double ld =strtod((char*)key,NULL);
printf("%lf", ld);
打印:39.751971
但printf("%6.7f",ld) 给了我正确的值,但我无法存储到变量中。
【问题讨论】:
-
but I couldn't store into a variable....那是什么? -
我需要将其转换并存储为双精度..
-
使用
"%f"在显示有效数字方面存在问题。要打印 FP 值并查看其有效数字,请参阅 stackoverflow.com/q/16839658/2410359 -
不丢失精度是不可能的,因为
double通常只有有限的位数。