为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
江户川乱折腾 2019-11-04 13:09:14
我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中,该如何传递呢?
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-11-04
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

更换


val = (int)pow(5, i);


double d = pow(5,i);


查看完整回答
反对 回复 2019-11-04
?
忽然笑

TA贡献1806条经验 获得超5个赞

自己实施战俘。


int myPow(int base, int exponent) {

    int n = 1;

    for (int i = 0; i < exponent; i++) {

        n *= base;

    }

    return n;

}

当然,这仅处理正指数,并且仅在整数上起作用,并且当然有更有效的方法可以做到这一点。例如,参见Haskell中的来源^。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 755 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信