Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)?

*/

int wert;
Hallo, wie kommt es, dass die Funktion pow(x, y) wie im folgenden Scrip aufgeführt unterschiedliche
Ergebnisse liefert? Freue mich über eine Erklärung.

void setup()
{
Serial.begin(9600);
}

void loop()
{
for (int i = 0; i < 5; i++)
{
Serial.println(i);
wert = pow(2, i);
Serial.println(wert);
Serial.println(pow(2, i));
delay(5000);
}
}

Das liegt am Datrentyp und der Rechen(un)genauigkeit. Probiere mal dies:

int wertI;
double wertD;

void setup()
{
  Serial.begin(9600);
  for (int i = 0; i < 5; i++)
  {
    Serial.print(i);
    wertI = pow(2, i);
    wertD = pow(2, i);
    Serial.print('\t');
    Serial.print(wertI);
    Serial.print('\t');
    Serial.print(wertD,6);
    Serial.print('\t');
    Serial.println(pow(2, i),6);
  }
}

void loop()
{
}

Hallo, wie kommt es, dass die Funktion pow(x, y) wie im folgenden Scrip aufgeführt unterschiedliche
Ergebnisse liefert?

Nunja...

Du solltest dich mal kundig machen, was der implizite cast (von float nach int) so alles mit deinen Werten anstellt.
Dabei wirst du dann auch erfahren/lernen, warum man das besser nicht so tut.

Zweierpotenzen sind keine Gleitkommazahlen, und die Funktion pow(x,y) ist nicht für Zweierpotenzen da.

Wenn du 2 hoch 7 rechnen willst, brauchst du einen shift-Befehl, sonst nichts.
Wenn du 0.4 hoch -3.5 rechnen willst (warum auch immer), ist pow für dich da.