如果将pow()的返回值赋给整数,则四舍五入

我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中,该如何传递呢?


江户川乱折腾
浏览 756回答 3
3回答

慕容708150

0.5在投射到之前添加int。如果您的系统支持它,则可以调用C99&nbsp;round()函数,但是出于可移植性的原因,我更喜欢避免使用它。

慕妹3146593

更换val = (int)pow(5, i);与double d = pow(5,i);

忽然笑

自己实施战俘。int myPow(int base, int exponent) {&nbsp; &nbsp; int n = 1;&nbsp; &nbsp; for (int i = 0; i < exponent; i++) {&nbsp; &nbsp; &nbsp; &nbsp; n *= base;&nbsp; &nbsp; }&nbsp; &nbsp; return n;}当然,这仅处理正指数,并且仅在整数上起作用,并且当然有更有效的方法可以做到这一点。例如,参见Haskell中的来源^。
打开App,查看更多内容
随时随地看视频慕课网APP