Go Down

Topic: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)? (Read 225 times) previous topic - next topic

rainer-ernst

*/

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);
  }
}

agmue

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()
{
}
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

combie

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.
Es ist offensichtlich, dass uns die Umstände alleine nicht glücklich oder unglücklich machen.
Es ist die Art unserer Reaktion darauf, die unsere Gefühle bestimmt.

michael_x

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.

Go Up