Rim*_*nas 8 c floating-point pow
这个打印100:
int j=2;
int i= pow(10,2);
printf("%d\n", i);
Run Code Online (Sandbox Code Playgroud)
这个打印99:
int j=2;
int i= pow(10,j);
printf("%d\n", i);
Run Code Online (Sandbox Code Playgroud)
为什么?
R..*_*R.. 12
发生的事情是你有一个C实现,其标准库的实现质量非常低pow
,即使在type(double
)中可以表示确切的结果,也会返回不精确的结果.调用pow(10,2)
似乎产生了下面的值100.0
,当舍入到整数时,产生99.当参数不变时你没有看到这个的原因是编译器冒昧地优化了调用alltogether和replace它在编译时持续为100.
如果您的意图是执行整数幂,请不要使用该pow
函数.写一个适当的整数幂函数,或者当指数已知时,直接写出乘法.
归档时间: |
|
查看次数: |
5715 次 |
最近记录: |