Arduino Forum

International => Deutsch => Topic started by: rainer-ernst on Apr 17, 2018, 07:00 pm

Title: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)?
Post by: rainer-ernst on Apr 17, 2018, 07:00 pm
*/

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);
  }
}
Title: Re: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)?
Post by: agmue on Apr 17, 2018, 07:09 pm
Das liegt am Datrentyp und der Rechen(un)genauigkeit. Probiere mal dies:

Code: [Select]
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()
{
}
Title: Re: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)?
Post by: combie on Apr 17, 2018, 07:10 pm
Quote
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.
Title: Re: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)?
Post by: michael_x on Apr 18, 2018, 09:13 am
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.