gpt4 book ai didi

c - 从具有 1 个小数位的文件 (C) 读取 double 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:38 26 4
gpt4 key购买 nike

出于某种原因,当我尝试读入一个 double 值并使用此代码将其打印出来时,它会打印出:"865955189279958860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000"

    fscanf(inFile, "%.1lf", &value);
printf("%.lf\n", value);

当我将代码更改为:

    fscanf(inFile, "%lf", &value);
printf("%.1lf\n", value);

我得到了我想要的输出。但显然我希望 double 存储为 8.1(例如),而不必在打印时进行格式化。

如有任何帮助,我们将不胜感激!

最佳答案

A double总是有一定数量的有效小数位,例如 IEEE 754 给出 15 到 17。所以你不能将存储的值限制为任意小数位数,更不用说 decimal 分数表示的问题了通过二进制数。例如,没有办法准确地将 6.1 存储在 IEEE-754-double 中。

无论如何,您可能希望对值进行四舍五入。但同样,请注意上述问题。

如果您希望输出的小数位数有限,只需使用相应的格式字符串,例如 "%.1lf"。默认数字是 6,这就是为什么您认为它是这样存储的。

但对您来说最好的解决方案可能是使用 "%g"注意:阅读文档总是一个好主意,在本例中是printf()

关于c - 从具有 1 个小数位的文件 (C) 读取 double 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584933/

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