gpt4 book ai didi

c - 使用 time_t 解析用户输入

转载 作者:行者123 更新时间:2023-11-30 16:02:18 28 4
gpt4 key购买 nike

我的想法是,如果用户输入t = 2.5,那么我将 2 和 0.5 分别提取到 2 个不同的变量中。但我无法做到这一点。

这是代码:

$ export LT_LEAK_START=1.5
$ echo $LT_LEAK_START
1.5

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
double d;
time_t t;
long nsec;

d=strtod(getenv("LT_LEAK_START"), NULL);
t=(time_t)d;

nsec=d-(double)((time_t)d); // Extract fractional part as time_t always whole no.
printf("d = %lf\n",d);
printf("t = %u, nsec = %f\n",d,nsec);
}

输出是:

# ./a.out 
d = 1.500000
t = 0, nsec = 0.000000

最佳答案

您的输出已损坏。实际上,您在以下代码中写入了两次 d 的值:

nsec=d-(double)((time_t)d); // Extract fractional part as time_t always whole no.
printf("d = %lf\n",d);
printf("t = %u, nsec = %f\n",d,nsec);

如果你写的是:

nsec=d-(double)((time_t)d); // Extract fractional part as time_t always whole no.
printf("d = %lf\n",d);
printf("t = %u, nsec = %f\n",t,nsec);

然后你会得到输出:

d = 1.500000
t = 1, nsec = 0.000000

现在可以更清楚地看出您存在舍入错误。在这种情况下,您可以通过将 0.5 分配给 nsec(一个 long)来舍弃所有小数位。将 nsec 改为 float

关于c - 使用 time_t 解析用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458649/

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