给定一个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的行为.