Autor | Thema: Val () und Int() | | Datum:25.09.01 20:53 
(b.kuenzel@chello.at) | |
Hallo Profaner
Bitte kann mir jemand sagen, wieso ich bei der folgenden Multiplikation die Integerfunktion brauche oder ist es ein Fehler in Profan.
Declare X1$,X%
X1$="2.5;4.5"
X%=Mul(Val(SubStr$(X1$,1,";")),100)
Print X% '>Ergebnis ohne Int() 200 ist Falsch
X%=Int(Mul(Val(SubStr$(X1$,1,";")),100))
Print X% '>Ergebnis mit Int() 250 ist Richtig
Print Mul(Val(SubStr$(X1$,1,";")),100) '>Ergebnis ohne Int() 250 ist Richtig
MFG
Bernhard
|
| | Datum:26.09.01 11:30 
(schmidts@flat2serv.de) | |
Ist ein "Handbook-not-read-error" :) Eine Integer Variable kann keine Nachkommastellen aufnehmen, dafür brauchst Du den Typ Float. Ersetze in Deinem Testprogramm mal X% gegen X! und Du wirst sehen ...
Mfg.
Sven Schmidts
|
| | Datum:26.09.01 12:40 
(joerse@gmx.de) | |
Hallo,
Das ist zwar eine schöne Formulierung für einen solchen Fehler,
aber eigentlich nicht zutreffend.
In dieser Zeile:
X%=Mul(Val(SubStr$(X1$,1,";")),100)
wird x% ja kein Float sonder der Integer 250 zugewiesen.
Aber anscheinend hat Profan bei der Rechenaufgabe Schwierigkeiten,
wenn der Wert ohne Weiteres einer Integervariablen zugewiesen wird.
Zum Glück gibt es ja mit Int() genau die Funktion, die das erledigt.
Ansonsten finde ich das auch sehr merkwürdig.
Gruß
Jörg
|
| | Datum: 26.09.01 12:46 
(b.kuenzel@chello.at) | |
Hallo Sven,
das mit dem Vartyp Float ist mir schon klar, aber ich rechne ohne Variablen und dabei kommt immer eine Integerzahl heraus (es ist eine Umrechnung Zentimeter in 1/10 Millimeter) es wird auch richtig umgerechnet (siehe bei Print), ich speichere ja nur das Endresultat in die IntegerVariable und das müßte eigentlich ohne Int-Funktion automatisch funktionieren.
Es müßte auch bei Nackommastellen funktionieren, da müßte dann der ganzzahlige Wert in die Integervariable eingetragen werden. Was eigentlich logisch währe.
Bei GFA-Basic funktioniert es auch so.
MFG
Bernhard
|
|
|