在循环中计算功率时的错误值

时间:2015-09-23 12:17:04

标签: c

我在计算C语言中整数的幂时遇到问题。

我必须将数组值转换为等效的整数,即{5,3,0,5,3}到53053

我有以下代码

int repsEqual(int a[], int len, int n)
{
    int temp = 0;
    int i = 0;

    for(i; i < len;i++)
    {
        temp =   temp + a[i] * pow(10, (len - (i+1)));
    }

   if(temp == n) {
       return 1;
   }
   else {
       return 0;
   }
}

始终返回0.由于电源输出错误。 {5,3,0,5,3}返回53052。

请帮帮我们

1 个答案:

答案 0 :(得分:2)

您正在混合浮点和整数运算,因此会遇到舍入问题。无需调用pow,这是一个浮点库函数,并且不需要为此分配进行过度杀伤。使用整数算术的更简单的实现是:

int repsEqual(int a[], int len, int n)
{
    int temp = 0;

    for (int i = 0; i < len; i++)
    {
        temp = temp * 10 + a[i];
    }

    return (temp == n);
}

LIVE DEMO