Witam!
Mam taki niecodzienny problem z funkcją pow z biblioteki math.h który zdarzył mi się przy okazji robienia zadania 429. Simple Numbers Conversion (choć przyznam był to nie pierwszy raz kiedy taki problem mi się zdarzył). Otóż problem w tym że funkcja ta użyta z dwoma dodatnimi argumentami jakoś źle liczy te potęgi.
if(c=="0") return 0; else{
int liczba=0;
for(int i=0;i<c.length();++i){
liczba=liczba+(wartosc(c[c.length()-i-1])*pot(p,i));
}
return liczba;}
to jest fragment moje rozwiązania tego zadania (dokładniej funkcji służącej do konwersji danej liczby z danej podstawy do liczby o podstawie 10) gdzie pot jest prostą funkcją którą napisałem do liczenia potęg liczb naturalnych.
int pot(int a, int b){
if(b==0) return 1; else return (a*pot(a,b-1));
}
I jeżeli zastąpię funkcję pot funkcją pow to np dla danych wejściowych przykładowych podanych w treści samego zadania
ABC 15 10
program zwraca wynik 2426 choć powinien zwrócić 2427. Gdy jest moja funkcja pot to jest wszystko ok. Wie ktoś może dlaczego z funkcją pow nie działa? Nie potrafię podać konkretnego przykładu kiedy funkcja pow liczy źle potęgi, ale jak już wspominałem już kiedyś miałem parę razy kłopoty z tą funkcją gdy miała 2 argumenty będące liczbami naturalnymi dodatnimi...