0

私は C++ を使用していますが、次のエラーが発生します。

bool comprovarCodi(long long num, int DC){
bool codi_correcte;
int i=0, suma_senars=0, suma_parells=0, suma_total=0, desena_superior, DC_calculat, cont=0;
while(num!=0){
    num=num/10;
    cont++;
    i++;    
}
if(cont==12){
    for(int j=1; j<12; j=j+2){
        suma_senars=suma_senars+num%pow(10,j);

理由はわかりませんが、「num」は整数なので、演算子「%」を使用できると思います。

誰かがなぜそれが失敗するのか知っていますか?

ありがとうございました

4

2 に答える 2

1

このような用途には使用しないでくださいpow

long long pow_ten = 10;
for(int j=1; j<12; j=j+2)
{
   suma_senars=suma_senars+num%pow_ten;
   pow_ten *= 100;
}

これはより高速であるだけでなく、計算powのようなものを使用するのではなく、正しく計算されます。したがって、特に整数にキャストし直す場合は、必要な数値が常に正確に得られるとは限りません。exp(log(x) * y)x ** y

于 2015-12-30T20:56:25.980 に答える
0

最初に int にキャストする必要があります
suma_senars = suma_senars + num % (int)pow(10,j);
: suma_senars += num % (int)pow(10,j);
より明確: suma_senars += num % ( (int)pow(10,j) );

于 2015-12-30T20:48:22.433 に答える