1

我需要帮助。我必须在不丢失精度的情况下将 char * 转换并存储为 double 或 long double 。

事实上,我尝试使用strtoldatof方法(也是strtold),但这些方法正在四舍五入该值。

例如:

char * key  ="39.7519707";

double ld =strtod((char*)key,NULL);

printf("%lf", ld);

打印:39.751971

printf("%6.7f",ld)给了我正确的值,但我无法存储到变量中。

4

1 回答 1

1

首先,您只需要%f格式说明符即可打印double.

然后,您不会因为使用而失去精度strtod(),输出表示是您如何使用格式说明符的printf()问题%f

根据C11第 7.21.6.1 章,fprintf()

[...] 如果缺少精度,则将其视为 6;[...]

接下来,当你做

printf("%6.7f",ld);

精度变为 7 并输出您期望看到的值。

于 2016-02-19T16:58:22.593 回答