在 C 中使用 "pow()" 时非法使用浮点误差

  • 本文关键字:非法 误差 pow c
  • 更新时间 :
  • 英文 :


我在第 8、10 和 12 行收到"非法使用浮点"错误。

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{   int p,i,c=0;
    scanf("%d",&p);
    for(i=11;i>=0;i--)
    {   if((p==pow(2,i))&&(p%pow(2,i)==0))      //here
            c++;
        else if((p/pow(2,i)!=0)&&(p%pow(2,i)!=0))   //here
        {       c++;
            p=p%pow(2,i);               //here
        }
    }
    printf("%d",c);
    getch();
}

我认为在使用 pow(( 函数计算 p 的余数时存在问题。请帮助我。

不能

对模数 ( % ( 使用floatdouble值。模的值需要是一个整数,这是编译器在给你错误"非法使用浮点"时告诉你的

您不应该将取模运算符用于其他任何事情

<integer value>%<integer value>

如果您只想像评估int一样评估您的double(不四舍五入(,那么您可以将double投射到 int .

喜欢这个:

p%(int)(pow(2,i))!=0

最新更新