hilfe blitz rechnet floats falsch

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: hilfe blitz rechnet floats falsch

BeitragFr, Jul 03, 2009 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo blitzer!

ich sitzt grad mit solchen augen vor meim monitor --> Shocked
Weis der geier warum, aber Blitz rechnet gerade keine Floats

Code: [AUSKLAPPEN]

Global c#

c# = 5 / 4


Print c#


Für C kommt der wert 1.0 raus!
BB hab ich schon neu gestartet.
Bin ich zu doof oder kennt einer den Bug ?


Gruß
Dottakopf


[/code]
Rechtschreibfehler gelten der allgemeinen Belustigung!

Blackside

BeitragFr, Jul 03, 2009 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
änder mal
Code: [AUSKLAPPEN]
c# = 5 / 4

in:
Code: [AUSKLAPPEN]
c# = 5.0 / 4.0


Wink Sonst ist klar das er mit Integern rechnet Razz
Hier sollte eigentlich eine Signatur stehen!

Dottakopf

BeitragFr, Jul 03, 2009 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
jo so wie du es geschrieben hast gehts.


aber sowas muss doch gehen !!!
Code: [AUSKLAPPEN]

Global y#

a = 12
b = 10

y# =  a / b


Print y



bei mir kommt aber ne glatte 1.0 raus. Sehr komisch
Danke für deine schnelle antwort

(achja pc hab ich auch schon neu gestartet)
Gruß
Dottakopf

Noobody

BeitragFr, Jul 03, 2009 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Variablen macht man das über den Befehl Float

Code: [AUSKLAPPEN]
y# = a/Float( b )
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Smily

BeitragFr, Jul 03, 2009 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Intern passiert folgendes:

c = a/b

wird zu:

-> nehme a in den speicher
-> nehme b in den speicher
-> teile die zahlen im speicher durcheinander (doof formuliert, mir fällt nix besseres ein)
-> weise das ergebnis c zu.


bei schritt 3 weis der Computer noch garnicht, ob der das ergebniss einem int, einem float oder irgendeinem anderen datentyp geben muss. Deswegen wird als zieldatentyp immer der genaueste datentyp genutzt, der in der rechnung vorkommt.

Deswegen wird ein int/int immer zu int.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Dottakopf

BeitragFr, Jul 03, 2009 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh Ok. Auch wieder was gelernt...

Dachte das wenn ich mit
Code: [AUSKLAPPEN]

y# = ....


beginne, dass das für bb klar ist das er hier Floats dividieren muss.
Danke für euer verständniss, frage war ja recht nooblike.

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

hazumu-kun

BeitragFr, Jul 03, 2009 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau dieses Problem hab ich regelmäßig.
Z.B. wenn in einer For-Schleife das i mit in Berechnungen einfließt, in denen Float rauskommen sollte, aber sonst nur Int verwendet wird.

Bisher hab ich immer die Laufvariable als Float deklariert.
Danke für den Tipp mit Float#()
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jul 03, 2009 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon allein das es in vielen anderen Programmiersprachen zu Fehler kommt, wenn man verschiedene Variablentypen miteinander verrechnet, würde ich generell - auch wegen der Geschwindigkeit - immer versuchen gleiche Variablentypen zu verrechnen.

Dann wäre dein Beispiel zu folgendem:

Code: [AUSKLAPPEN]
Global y#

Local a# = 12
Local b# = 10

y = a / b

Print y

WaitKey


Das Local kann man sich bei Blitz zwar sparen, aber wenn man eine gescheite IDE benutzt, ist es eine sehr gute Hilfestellung bei Fehleranalysen. Einfach machen und gut ist.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group