Autor
|
Thema: rundungsfehler (1407 mal gelesen)
|
AnfangIstImmerSchwer Mitglied
Beiträge: 31 Registriert: 25.06.2008
|
erstellt am: 10. Nov. 2008 08:16 <-- editieren / zitieren --> Unities abgeben:
Hallo! Das Problem: ich möchte, dass folgende Division korrekt berechnet wird: 9.135:0.0008. Wenn ich das auf dem Taschenrechner berechne, erhalte ich 115. Plant Simulation sagt 114. Ich glaube, das das durch den Rundungsfehler kommt. Wie kann ich den Fehler vermeiden bzw. welche Einstellunge muss ich vornehmen, damit alle Nachkommastellen berücksichtigt werden. DANKE SCHÖN. Gruß, N.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 10. Nov. 2008 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für AnfangIstImmerSchwer
Hallo, wenn ich "9.135:0.0008" rechne (siehe Bild im Anhang). Kommt bei mir "11418.75" raus. Sollte man das ganze durch 100 Teilen (damit das mit deinem Ergebnis passt?!), würde sich 114,19 ergeben. Somit ist gerundet 114 korrekt. Grüße Patrick Nachtrag: Mein Taschenrechner gibt mir das gleiche Ergebnis aus. [Diese Nachricht wurde von pom am 10. Nov. 2008 editiert.] [Diese Nachricht wurde von pom am 10. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AnfangIstImmerSchwer Mitglied
Beiträge: 31 Registriert: 25.06.2008
|
erstellt am: 10. Nov. 2008 13:30 <-- editieren / zitieren --> Unities abgeben:
|
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 10. Nov. 2008 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für AnfangIstImmerSchwer
Hi, wir können das noch den ganzen Tag machen. Aber Plant 8.2 rundet richtig genau so wie mein Taschenrechner. Zeig mal deine Methode mit der du die Werte bestimmst, vielleicht ist dort ein Fehler. Falls nicht, gibt es neue Taschenrechner für unter 10¤. Grüße PAtrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AnfangIstImmerSchwer Mitglied
Beiträge: 31 Registriert: 25.06.2008
|
erstellt am: 10. Nov. 2008 21:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Patrick, unten befindet sich ein Teil der Methode, das mir Probleme bereitet: <<<<<<<<<<<<<<<<<<<<<<<<<<<<< if RestN = 0 then hN := 1; QN.anzahl := (xN/0.00008); QN.erzeugungszeit := "Anzahl einstellbar"; else QN.anzahl := 0; QN.erzeugungszeit := "Anzahl einstellbar"; for iN := 1 to (RestN/0.00008) loop if .BEs.N.erzeugen(DLN)=void then debug; end; next; end; bestelltN := 0; <<<<<<<<<<<<<<<<<<<<<<<<<<<< xN = 0,0184. Meine Quelle QNiSi bekommt als Anzahl 229 anstatt 230 übergeben. Danke schön. Gruß, N. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 11. Nov. 2008 07:17 <-- editieren / zitieren --> Unities abgeben: Nur für AnfangIstImmerSchwer
So wie bei den meisten Programmiersprachen wird auch bei SimTalk nicht gerundet, sondern der Nachkommateil abgeschnitten, wenn eine Gleitkommazahl in eine Ganzzahl umgewandelt wird. Um ein gerundetes Ergebnis zu erhalten, kannst du einfach vorher 0.5 addieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 11. Nov. 2008 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für AnfangIstImmerSchwer
Jep, 0.5 addieren oder falls es bei einer anderen Anwendung auch mal negative Zahlen gibt die 'round' Funktion benutzen. Gruß P. ------------------ Two hours of trial and error can save ten minutes of manual reading! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AnfangIstImmerSchwer Mitglied
Beiträge: 31 Registriert: 25.06.2008
|
erstellt am: 11. Nov. 2008 13:33 <-- editieren / zitieren --> Unities abgeben:
|