gpt4 book ai didi

将 char * 转换为 double,而不会丢失 c 中的精度

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:10 24 4
gpt4 key购买 nike

我需要一些帮助。我必须在不丢失精度的情况下将 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) 给了我正确的值,但我无法存储到变量中。

最佳答案

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

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

根据 C11,章节 §7.21.6.1,fprintf()

[...] If the precision is missing, it is taken as 6;[...]

接下来,当你做了

printf("%6.7f",ld);

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

关于将 char * 转换为 double,而不会丢失 c 中的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com