pow(10, 2) 和pow(10, i)得到不同的结果

 1. 问题描述

代码1:

    int num = pow(10, 2);
    printf("%d\n", num);

打印结果1:

代码2: 

    int i=2;
    int num = pow(10, i);
    printf("%d\n", num);

打印结果2:

 2. 原因分析

你有一个C实现,它的标准库有一个非常低质量的pow实现,即使精确结果可以用类型( double )表示,它也返回不精确的结果。 对pow(10,2)的调用似乎产生了刚好低于100.0的值,当四舍五入为整数时,得到99.当参数不变时,你没有看到这一点的原因是编译器冒昧地在编译时将所有调用全部优化并用常量100替换。

如果你的意图是做整数幂,不要使用pow函数。 写一个适当的整数幂函数,或者当指数已知时,直接写出乘法运算。

引用自:C:我用pow(10,2)和pow(10,j)得到了不同的结果,j = 2;(C: i got different results with pow(10,2) and pow(10,j), j=2;)_电脑培训

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值