Prozentrechnung

Backdoor

Level-1
Beiträge
132
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Hab da mal ne Frage möchte eine Prozentrechnung realisieren steh aber gerade etwas an.

Code:
l 100
l mw1  //(1000 dez)
/I
t mw2
l mw3  //(10 dez)
*I
t mw4   //
also der Plan wäre das beim MW4 dann 1 rauskommen sollte für z.b. 1% :D

naja tuts aber ned.

Bin euch für jede Hilfe dankbar!

Lg Chris
 
Auf die schnelle würde ich sagen:

100 / 1000 = 0,1

Dein Zahlenformat kann aber keine kommazahlen also ist das ergebniss = 0.

0 * 10 = 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und selbst wenn man von solch mathematischen Feinheiten mal absieht,
überschreiben sich MW1/2/3/4 durch deren Überschneidung gegenseitig.

Mfg
Manuel
 
Mach es doch so :
Code:
l 100.0
l mw2  //(1000 dez)
itd
dtr
/R
l mw4  //(10 dez)
itd
dtr
*R
RND+
t mw6
Und bitte immer daran denken : immer ganzahlige MW's nehmen weil das MW1 die MB1 und 2 beinhaltet, MW2 die MB2 und 3 usw.
Solche Überschneidungen bringen "lustige" Fehler ... :rolleyes:

Gruß
Larry
 
Damit das allgemein klappt solltest Du Real-Zahlen benutzen.
In Deinem speziellen Fall multipliziere erst mit 10 und teile dann durch 1000, dann stimmt das Resultat.
Gruß
Erich
 
Mach es doch so :
Code:
l 100.0
l mw2  //(1000 dez)
itd
dtr
/R
l mw4  //(10 dez)
itd
dtr
*R
RND+
t mw6
Und bitte immer daran denken : immer ganzahlige MW's nehmen weil das MW1 die MB1 und 2 beinhaltet, MW2 die MB2 und 3 usw.
Solche Überschneidungen bringen "lustige" Fehler ... :rolleyes:

Gruß
Larry


Alles klar danke dir das mit den MW ist mir eig eh klar aber naja :D

Lg Chris
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mach es doch so :
Code:
l 100.0
l mw2  //(1000 dez)
itd
dtr
/R
l mw4  //(10 dez)
itd
dtr
*R
RND+
t mw6
Und bitte immer daran denken : immer ganzahlige MW's nehmen weil das MW1 die MB1 und 2 beinhaltet, MW2 die MB2 und 3 usw.
Solche Überschneidungen bringen "lustige" Fehler ... :rolleyes:

Gruß
Larry

Oder so:
Code:
l 100.0
l md2  //(1000 dez)
/R
l md6  //(10 dez)
*R
t md10 //(REAL)
RND+
t mw14 //(INT)

Gruß
Klaus
 
Oder so:
Code:
l 100.0
l md2  //(1000 dez)
/R
l md6  //(10 dez)
*R
t md10 //(REAL)
RND+
t mw14 //(INT)
Das funktioniert aber nur, weil S7 in Gleitpunkt-Operationen denormalisierte Zahlen abweichend zur Norm ANSI/IEEE Std 754-1985 Siemens-speziell interpretiert. Is it a bug or a feature?

Ich nutze in meinen Programmen solche "Spezialitäten" nicht. Womöglich gewöhne ich mich dran und erwarte, daß das auf anderen SPS auch funktioniert ... :cool:

Harald
 
Zurück
Oben