gpt4 book ai didi

c - double 的 atof 精度正在引起悲伤

转载 作者:行者123 更新时间:2023-12-04 12:16:04 40 4
gpt4 key购买 nike

我有一个 ascii“15605632.68128593”,我想转换
它在不失去准确性的情况下翻倍 -

 so 
double d;
d=(double)atof("15605632.68128593");
printf("%f",d);

printed result is 15605632.681286

有任何想法吗 ?

谢谢 - !

最佳答案

您可能没有获得所有尾随小数位。试试 printf("%.8f", d) .

你也可以试试 sscanf("15605632.68128593", "%lf", &d)代替 atof称呼。

也没有必要强制转换 atof 的结果至 double .已经是双了。但 Actor 阵容没有坏处。

请注意 - 至少大约 6 年前,当我详细查看此内容时 - 许多 printfscanf实现是有问题的,因为它们的功能并不像你想象的那样完美。 Visual C/C++ 和 gcc 在其 native 实现中都存在问题。 This paper是一个有用的引用。

带有 gcc 4.3.4 的 Cygwin:

#include <stdio.h>

int main(void)
{
double x;

sscanf("15605632.68128593", "%lf", &x);
printf("%.8f\n", x);
return 0;
}

进而:
# gcc foo.c
# ./a
15605632.68128593

关于c - double 的 atof 精度正在引起悲伤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077946/

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