我pow
在C中使用函数并将返回值存储为整数类型.请参阅下面的代码段:
for (i = 0; i < 5; i++){
val = (int)pow(5, i);
printf("%d, ", val);
}
Run Code Online (Sandbox Code Playgroud)
这里i
,val
是整数,输出是1, 5, 24, 124, 624
.我相信这是因为浮点数25被视为24.99999 ...在分配给整数时会向下舍入到24.
如果我仍然需要将返回值存储在int中,我怎么能通过这个?
0.5
在施法前添加int
.如果您的系统支持它,您可以调用C99 round()
函数,但出于可移植性的原因,我更愿意避免使用它.
更换
val = (int)pow(5, i);
Run Code Online (Sandbox Code Playgroud)
同
double d = pow(5,i);
val = (int)((d > 0.0) ? floor(d + 0.5) : ceil(d - 0.5));
Run Code Online (Sandbox Code Playgroud)