gpt4 book ai didi

C 输入和输出 - 我们可以使其自适应吗?

转载 作者:行者123 更新时间:2023-11-30 14:53:51 25 4
gpt4 key购买 nike

我编写了以下代码:

#include <stdio.h>

double recalc(double a);

int main(void)
{
double a;
printf("\nPlease enter a duration in ms. This program will "
"calculate the corresponding amount of hours.\n");
scanf("%lf", &a);
printf("Your input in ms is %.15f hours\n", recalc(a));
return 0;
}

double recalc(double a)
{
a = a/1000/60/60;
return a;
}

因此,该程序将毫秒转换为小时。到目前为止,一切顺利。

我在这里使用 %.15f 来保持合理的尺寸,但是如果我输入...比方说 0.0000000000001,我的 15 位小数是不够的。另外,但这只是装饰性的,如果我输入 360000000,我想在末尾截掉无效的 0。有人能解决这个问题吗?

最佳答案

try catch 指数并 sprintf 值。根据需要删除尾随零。

#include <stdio.h>
#include <string.h>

char *recalc(double a);

int main(void)
{
double a;
printf("\nPlease enter a duration in ms. This program will calculate the corresponding amount of hours.\n");
scanf("%lf", &a);
printf("Your input in ms is %s hours\n", recalc(a));
return 0;
}

char *recalc(double a)
{
static char value[100] = "";
char *sign = NULL;
size_t len = 0;
int exp = 10;

a = a/1000.0/60.0/60.0;
sprintf ( value, "%e", a);
sign = strpbrk ( value, "-");
if ( sign) {
sscanf ( sign + 1, "%d", &exp);
exp += 5;
}
sprintf ( value, "%.*f", exp, a);
len = strlen ( value) - 1;
while ( value[len] == '0') {
value[len] = '\0';
len--;
}
if ( value[len] == '.') {
value[len] = '\0';
}
return value;
}

关于C 输入和输出 - 我们可以使其自适应吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46988953/

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