我pow
在 C 中使用该函数并将返回值存储为整数类型。请看下面的代码片段:
for (i = 0; i < 5; i++){
val = (int)pow(5, i);
printf("%d, ", val);
}
这里i
和val
是整数,输出是1, 5, 24, 124, 624
。我相信这是因为浮点数 25 被视为 24.99999... 在分配给整数时会向下舍入为 24。
如果我仍然需要将返回值存储在 int 中,我该如何绕过它?
0.5
在转换为之前添加int
。如果您的系统支持它,您可以调用 C99round()
函数,但出于便携性原因,我更愿意避免使用它。
代替
val = (int)pow(5, i);
和
double d = pow(5,i);
val = (int)((d > 0.0) ? floor(d + 0.5) : ceil(d - 0.5));
我自己也有这个问题。我在您的说明中轻松解决了它,只需添加 if 语句即可。
if (k%n>0)
{
k=k+1;
}