Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - mit Variabeln rechnen
Cyberbob - Mi 09.10.02 18:38
Titel: mit Variabeln rechnen
HI ihr,
hab gerade einen totalen Blackout. Ich lese aus einer Ini Datei zahlen aus und speichere diese, wie das so üblich ist, als variablen ab.( integerwert)
und nun will ich mit ihnen rechnen. Es sieht so aus:
var1:=meinePunkte/gesammte punkte
das geht aber cniht und ich bekomme einen Fehler -Incompatible types integer and Extended.
Was mache ich falsch?
Cyberb :P b
SMI - Mi 09.10.02 19:00
Aus der Fehlermeldung schließe ich, dass Var1 als Integer(GanzeZahl), und entweder meinePunkte und/oder gesammelte punkte ein Extended(Kommazahl) ist.
Wenn var1 ein Integer Wert, ist musst du mit div Teilen, oder mit / Teilen und Runden alternativ hast du die Bedeutung von Integer und Extended vertauscht, wenn Var1 eine Kommalzahl speichern soll.
SMI
Cyberbob - Mi 09.10.02 19:13
hi ihr,
hmm, also var1 soll ja eine Kommazahl werden, wie muss ich das dann richtig machen? Einen Extendtypen kenne ich nciht...
Cyberb :P b
SMI - Mi 09.10.02 19:26
Folgende Werte sind Fließkommawerte:
Real 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.4 x 10^-4932 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
Folgende sind Ganzezahlen
Smallint -32768..32767 16 Bit einschließlich Vorzeichen
Longint -2147483648..2147483647 32 Bit einschließlich Vorzeichen
Byte 0..255 8 Bit, besitzt kein Vorzeichen
Word 0..65535 16 Bit, besitzt kein Vorzeichen
Integer -2147483648..2147483647 32 Bit einschließlich Vorzeichen
Cardinal 0..2147483647 32 Bit, besitzt kein Vorzeichen
Wenn das Ergebnis var1 eine Fließkommazahl sein soll must du so rechnen
var1 muss eine Fließkommazahl sein, daher auch die Compiler Meldung, dass eine Integer(Ganzzahl) inkompatibel zu eime extended=Fließkommazahl, weil er nicht weiß, was mit den Kommas Stellen zu tun ist.
Quelltext
1: 2: 3: 4: 5: 6: 7:
| VAR var1 :extended; meinepunkte: integer; gesammtepunkte: integer; BEGIN var1:= meinepunkte / gesammtepunkte; END; |
Wenn das Ergebnis eine Genzezahl sein soll rechnest du so
Quelltext
1: 2: 3: 4: 5: 6: 7:
| VAR var1 :integer; meinepunkte:extended; gesammtepunkte: extended; BEGIN var1:= ROUND(meinepunkte / gesammtepunkte); END; |
Wenn alle Werte Genzsahlen sind rechnet man so:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| VAR var1 :integer; meinepunkte: integer; gesammtepunkte: integer; BEGIN var1:= meinepunkte div gesammtepunkte; END; |
SMI
(10.10.02 09:09 Tino) Code-Tags hinzugefügt.
Cyberbob - Mi 09.10.02 20:12
Ja danke super, jetzt rechnet er zumindest schon mal, aber kann ich auch bestimmen, das er nur 2 Stellen hinter dem Komma anzeigt?
Ich dachte an Extended[4] aber das klappt irgendiwe nicht.
Gibt es da ne Lösung für?
Cyberb 8) b
SMI - Mi 09.10.02 20:24
Quelltext
1: 2: 3: 4: 5:
| Var test:extended; begin test:=1/3; showmessage(FloatToStrF(test,ffFixed, 18, 2)); end; |
SMI
(10.10.02 09:10 Tino) Code-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!