Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: Rundungsfehler in SCL

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo habe in SCL folgendes Problem:

    Wenn ich folgendes Rechne: Ergebnis := 99500/100.0;

    bekomme ich 995.00 heraus.

    jedoch bekome ich bei der Rechnung: Ergebnis := 99500/1000.0;

    das hier raus: 99.4999995

    wieso rundet der dass so komisch, weis das jemand?
    Zitieren Zitieren Rundungsfehler in SCL  

  2. #2
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Format REAL!!!!

    Real umwandeln rechnen->rückwandeln.

    Habe gerade gesehen 99500/100.0 sollte zumindest -> 99500.0/100.0 sein, oder spielt das bei SCL keine Rolle?

    Kenn mich da nicht so aus.
    Geändert von Gerhard K (12.01.2011 um 15:01 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    @Benson:
    es ist so, wie von Gerhard genannt. Die Real-Zahl bildet den Wert logarhythmisch ab.

    @Gerhard:
    Ja und Nein. Bei dieser einfachen Rechnung würde der SCL-Compiler tatsächlich das Datenformat korrigieren. Angeblich wird sogar bei weiteren bekannten Variablen automatisch ein Typecast gemacht. Ich mußte in der vergangenheit aber feststellen, dass man sich darauf entweder nicht verlassen kann oder das SCL da sehr flexibel ist. Ich würde jedenfalls jedem empfehlen, alle berechnungen immer Typ-richtig durchzuführen um dadurch Problemen aus dem Weg zu gehen. Auf den compilierten Code hat die Typumwandlung jedenfalls keinen Einfluß, denn sie wird entweder von selbst korrekt ergänzt oder wenn nicht dann ist das Berechnungsergebnis dann fehlerhaft.

    Gruß
    Larry

  4. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Gerhard K (12.01.2011)

  5. #4
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ich habe jetzt ein ganz anderes problem dazu bekommen. habe jetzt einen festen wert in eine variable geschrieben :

    Zust_Z1 := Zustell_Z1/Nachkommastellen_REAL;
    Zust_Z2 := Zustell_Z2/Nachkommastellen_REAL;
    Zust_Z3 := Zustell_Z3/Nachkommastellen_REAL;
    Zust_Z4 := Zustell_Z4/Nachkommastellen_REAL;

    in der ersten Zeile ist die Variable Nachkommastelle noch: 1000.0
    in allen 3 folgenden steht dort 0.0 drin, wieso denn das?
    Zitieren Zitieren Ok  

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo Benson,
    anhand des vorliegenden Codes kann ich mir das beschriebene Verhalten nicht erklären.
    Ist der Code genau so in deinem Script realisiert ?

    Gruß
    Larry

  7. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    der code sieht so aus:


    Nachkommastellen_REAL := 1000.0;
    // FOR i := 1 TO 3 DO
    // Nachkommastellen_REAL := Nachkommastellen_REAL * 10.0;
    // END_FOR;

    Zust_Z1 := Zustell_Z1/Nachkommastellen_REAL;
    Zust_Z2 := Zustell_Z2/Nachkommastellen_REAL;
    Zust_Z3 := Zustell_Z3/Nachkommastellen_REAL;
    Zust_Z4 := Zustell_Z4/Nachkommastellen_REAL;

    das problem mit der Nachkommastellen_REAL variablen besteht noch und wenn ich die FOR schleife einkommentiere, dann geht die cpu auf stop. angeblich wegen einem zeit problem, aber die schleife muss doch nur 3 mal durchlaufen, warum geht das alles nicht?
    Zitieren Zitieren code  

  8. #7
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute. SOrry, ich habe den Fehler gefunden, hatte Nachkommastellen_REAL und i erst nachträglich eingefügt und den Instanz DB nich tneu erzeugt. sorry.

    Ps. das mit den falsch gerundeten nachkommastellen hat sich jetzt durch die Forschleife erledigt.
    Zitieren Zitieren Fehler gefunden  

Ähnliche Themen

  1. Rundungsfehler bei Realzahlen
    Von GFI im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.01.2008, 16:56

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •