Go Down

Topic: Warum gibt es unterschiedliche Ergebnisse bei der Funktion pow(x, y)? (Read 235 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.
Der Verstand, und die Fähigkeit ihn zu gebrauchen, sind zweierlei Fähigkeiten.

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