小编use*_*359的帖子

给定2 ^ n,使用对数找到n

给定一个2的幂的整数(2 ^ n),我想找出n,使用对数的索引值.查找索引的公式为:log(number)/ log(2).以下是代码段:

  unsigned long int a;
  double apower;
  apower = log((double)a) / log((double)2);
Run Code Online (Sandbox Code Playgroud)

我发现'apower'的值在a的某个大值上是错误的,我不知道值,因为我的代码在提交之后失败了.为什么会这样?有铸造问题吗?

以下是整个片段:

  int count = 0;
  unsigned long int a,b;
  double apower,bpower;
  apower = log((double)a) / log((double)2);
  bpower = log((double)b) / log((double)2);
  count = abs(apower - bpower);
  printf("%d\n",count);
Run Code Online (Sandbox Code Playgroud)

a和b的值总是2的幂.所以apower和bpower必须在小数位数为00.这就是为什么count的值将是int(%d).我只是想知道Logarithm的行为.

c math

3
推荐指数
1
解决办法
178
查看次数

标签 统计

c ×1

math ×1