Given 2 ^ n, finde n mit dem Logarithmus
Gegeben eine ganze Zahl (2 ^ n), die Potenz von 2 ist, möchte ich n, den Indexwert mit Logarithmus herausfinden. Die Formel zum Finden des Index lautet: log (Nummer) / log (2). Es folgt das Code-Snippet:
unsigned long int a;
double apower;
apower = log((double)a) / log((double)2);
Ich habe festgestellt, dass der Wert von 'apower' bei einem großen Wert von a falsch ist. Ich kenne den Wert nicht, da mein Code nach dem Senden fehlschlägt. Wieso ist es so? Gibt es ein Casting-Problem?
Folgend ist das gesamte Snippet:
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);
Werte von a und b sind immer Potenzen von 2. Daher müssen apower und bpower 00 in Dezimalstellen haben. Deshalb ist der Wert von count int (% d). Ich möchte nur das Verhalten des Logarithmus kennen.