Kommastellen in REAL ( mit SCL )

Zuviel Werbung?
-> Hier kostenlos registrieren
Hab ich da jetzt nen Gedankenfehler drin? Wenn du 2,123456 E-02 hast, dann hast du ja eigentlich 0,02123456. Dann nimmst du halt nicht x100 sonder mal 10000, dann müsstest du 212,3456 bekommen. oder bin ich da jetzt auf dem holzweg?


willkommen auf meinem holzweg :rolleyes:

du wirst immer nur eine zahl vorm komma haben, der rest schlägt sich im exponenten nieder ... es ist halt eine gleitkomma und keine festkommazahl
 
sorry ich schalte mich ungern so spät in eine diskussion ein aber ich denke man sollte hier mal erklären was real ist:

ein real nach IEEE format wie wir Ihn hier verwenden besteht aus:
einer Mantisse von 24 Bits und einem Exponenten von 8 bits (zusammen 32 bits).

daraus ergibt sich eine Auflösung (das was man in der mantisse abspeichern kann) von 7-8 Stellen egal wo das komma ist, die mantisse kennt sowieso kein komma.
das komma wird über den exponenten dargestellt und hat auch seine grenzen, nämlich dann wenn zahlen zu groß oder zu klein werden.

bei komplizierten mathematischen berechnungen kommt es eben dann zu rundungsfehlern, was sich fortpflanzen kann und je mehr man rechnet das ergebnis immer ungenauer wird.

auch gibt es eine reihe von effekten bedingt duch das boolsche format eines computers.
am besten mal die mathematischen grundlagen im wickipedia nachlesen.

ein beispiel:
1000000.0 + 0.00001 wird nie etwas zu der ersten zahl addieren weil das ergbnis unter der auflösungsgrenze des reals liegt.

was man mit reals kann, darf und worauf man achten sollte hat weder etwas mit scl noch mit step7 zu tun, es sind informatik grundlagen die man kennen sollte bevor man eine programmiersprache benutzt.

typischer praxisfehler ist ein betriebsstundenzähler zu dem man in jedem zyklus einen kleinen wert addiert. das wird wunderbar funktionieren bis der aufaddierte verbrauchswert so groß geworden ist das der zu addierende momentanverbrauch unter der auflösungsgrenze verschwindet und nicht mehr addiert wird.

die real2 in der oscat ist kein real mit 64 bits sondern ein hilfskonstrukt das die auflösungsgrenze des real auf 14 stellen erhöht, aber nur unter bestimmten voraussetzungen. bitte erst im manual lesen und dann einsetzen.
 
Im Notfall könnte auch helfen, mit Ganzzahlen zu rechnen, diese aber so zu skalieren, das der größtmögliche Zahlenbereich genutzt wird. Du mußt nur aufpassen, daß dein Zahlenwert nicht überläuft, z.Bsp. bei einer Multiplikation. Also rechnest du bildlich gesehen z.Bsp. mit µm statt mit m. Aber einfach wird das auch nicht, da man dann einige Spezialfälle abfangen muß.
 
Zurück
Oben