1. #1

    Registriert seit
    18.12.2011
    Beiträge
    159
    Thanked 182 Times in 98 Posts
    Blog Entries
    2

    Standard Potenzwert ermitteln, PC rechnet falsch

    Hallo,
    Hat einer eine plausible Erklärung, warum folgendes Ausgabe: 24 ergibt?

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void Calc(int n) {
        int moegliche_woerter = pow(n, 2);
        printf("%d", moegliche_woerter);
    
    }
    
    int main()
    {
        Calc(5);
        return 1;
    }

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Habs grad mit MG800 getestet.
    Er hat unter Windows compiliert und bekommt auch 24 raus.
    Ich bekomme unter Linux das korrekte Ergebnis:

    Code:
    dani@laptop:~$ g++ test.cpp -o test
    dani@laptop:~$ ./test
    25
    Was man mal probieren könnte wäre die Base als double zu übergeben bzw vorher zu convertieren, da es dafür keine Überladung als Integer gibt (pow - C++ Reference).
    Dürfte zwar eigentlich nichts ausmachen, aber sonst wüsste ich auch nicht woran es codeseitig liegen kann außer einem Fehler in der math.h unter Windows.

    Und was lernen wir draus? Linux ftw.


  3. #3
    Avatar von MG800
    Registriert seit
    11.06.2012
    Beiträge
    15
    Thanked 18 Times in 9 Posts

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Ich habs jetzt in C++ auch. Es ist tatsächlich so das es für ein basis die keine Fließkomma zahl ist keine Passende Überladung gibt. Aber warum des zu einem Rechenfehler führ ist mir unklar. Es ist auch nur bei 5 so alle andere Zahlen funktionieren ohne probleme.
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <iostream>
    using namespace std;
    
    void Calc(int n) {
         
        float moegliche_woerter = pow((float)n, 2.0);
        cout<<moegliche_woerter<<endl;
    
    }
    
    int main()
    {
        Calc(5);
        system("PAUSE");
        return 1;
    }

  4. #4

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    
    int main(int argc, char **argv)
    {
      printf("Moegliche Woerter: %f", pow(5, 2));
      getchar();
      return EXIT_SUCCESS;
    }
    Unter Windows mit
    gcc -Wall main.c
    kompiliert.

    Ausgabe:
    25.000000

    Edit:
    Habe deinen Quelltext 1 zu 1 übernommen. Ausgabe ist 25.
    Geändert von Mr. White (30.10.2012 um 20:38 Uhr)

  5. #5
    Avatar von MG800
    Registriert seit
    11.06.2012
    Beiträge
    15
    Thanked 18 Times in 9 Posts

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Zitat Zitat von GerMaN-DeLuXe Beitrag anzeigen
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    
    int main(int argc, char **argv)
    {
      printf("Moegliche Woerter: %f", pow(5, 2));
      getchar();
      return EXIT_SUCCESS;
    }
    Dein Listing funktioniert logischer weise da du als Ergebnis der Potenzierung ein float hast was laut Reference auch so vorgesehen ist. Raumi hat sein Potenzierung in einem int abgelegt. Die Frage ist nun warum beim Parsen ein Fehler unterläuft und wieso nur bei 5^2.

  6. #6

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Ich weiß, wieso mein Listing korrekt ist.
    Aber Raumis funktioniert auch. Er speichert das Ergebnis als int. Hier wird implizit gecastet. Also kann er das auch mit %d als Formatzeichen ausgeben lassen.
    Für mich sind die 24 nicht reproduzierbar.

  7. #7

    Registriert seit
    18.12.2011
    Beiträge
    159
    Thanked 182 Times in 98 Posts
    Blog Entries
    2

    Standard AW: Potenzwert ermitteln, PC rechnet falsch

    Ich habe bereits eine Lösung gefunden, meine Annahme warum da 24 rauskommt ist folgende.
    pow() gibt bei mir 25.000 aus, wenn man diese zu einer int konvertiert, macht er eine 24 daraus. Um entgegenzuwirken habe ich ein ceil(pow()); gemacht.

    Verwendet habe ich auch den GNU Compiler in Code:Blocks.

Ähnliche Themen

  1. Per Javascript Wert ermitteln?
    Von One Way im Forum Webentwicklung
    Antworten: 1
    Letzter Beitrag: 14.02.2014, 15:16
  2. Uhrzeit von U-Hacks falsch?
    Von ZarneXxX im Forum Feedback
    Antworten: 1
    Letzter Beitrag: 30.05.2013, 19:22
  3. Navigation verlinkt falsch
    Von Devon im Forum Webentwicklung
    Antworten: 2
    Letzter Beitrag: 10.06.2012, 17:28
  4. knuddels Falsch Überwiesen
    Von x failstar im Forum Fragen & Probleme
    Antworten: 5
    Letzter Beitrag: 24.05.2012, 17:10
  5. Falsch Knuddels per Tan überwiesen
    Von Failstar im Forum Knuddels Allgemein
    Antworten: 18
    Letzter Beitrag: 09.12.2011, 18:34
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.