Wer kann hier nicht rechnen....
Übersicht

![]() |
pileBetreff: Wer kann hier nicht rechnen.... |
![]() Antworten mit Zitat ![]() |
---|---|---|
.... ich oder mein PC?
Cls For t=1 To 50000 Print "Das Quadrat von " + t + " ist " + t * t Next Warum sind die Ergebnisse ab etwa 47000 negativ? Wie kann das sein? ![]() |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt daran das das aus dem Zahlenbereich den Blitzbasic unterstütz rausgeht. Dann fängt der mit -2147483648 wieder von vorne an. | ||
Aktuelles Projekt:
Demonspawn RPG |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, darum wirds ab etwa 80000 oder so auch wieder Positiv... hab mich schon stark gewundert.
Na dann hoff ich mal das ich keine höheren Werte, als die in Basic möglich sind, brauche. Danke für die schnelle Antwort. |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kommazahlen schaffen einen höheren Wert, glaub ich, da sie ja selbst durch mantisse und exponent aufgebaut sind. Aber der normale Wertebereich bis 2^32 sollte eigentlich ausreichen ![]() |
||
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne in der OnlineHilfe steht das Kommazahlen auch nur bis 2 Mrd.. Du bräuchstes schon ne long aber das geht ja glaub ich in BlitzBasic net. | ||
Aktuelles Projekt:
Demonspawn RPG |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah.. habs gefunden...
Also, hier mal kurz die Wertebereiche von den Fließkommazahlen: Singlereal: +-3.4*10^38 ---- +-1.1*10^-38 Doublereal: +-1.7*10^308 ---- +-2.2*10^-308 Extendetreal: +-1.1*10^4932 ---- +-3.3*10^-4932 BB rechnet mit Singlereal. Der linke Wert bezeichnet das Maximum, der rechte Wert zeigt den kleinsten Anzeigbaren Wert an (also der naheste Wert bei 0) |
||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok mir is gerade doch was eingefallen wo sowas zu einem Problem werden könnte.
Angenommen man hat ein Programm das läßt man 25 Tage mit einem Timer laufen dann würde die Rechnung, wenn ich mich nicht ganz irre so aussehen: 1000*60*60*24*25 Die 1000 steht für Milisekunden, da ein Timer ja in mili läuft,60 für Sekunden,60 für Minuten,24 für Stunden und 25 für die Tage. Das ganze Multipliziert und der Timer würde auf einen negativen Wert springen. Ja ich weiß, 25 Tage is wirklich viel für ein Programm oder Spiel, aber z.B. bei einer Wirtschaftssimulation die ja auch mit Timer läuft und an der man meistens eher lange sitzt könnte das doch passieren oder? |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber der timer zählt anders. du kannst zum beispiel eine variable für minuten, für stunden und für tage,etc. nehmen. Millisekunden und Sekunden währe etwas übertrieben oder? Aber selbst wenn du mit den beiden machen willst, kannst du immer noch zwei weiterer Vars nehmen ![]() |
||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Etwa so:
if mili=1000 sekunde=1+1 mili=0 endif ? Hm, müste gehn Thx |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nene, pro schleife millisekunden + 1 (zum Beispiel)
wenn millisekunden über 1000, dann minuten+1 und millisekunden=0 wenn sekunden über 60, dann minuten+1 und sekunden=0 ... ... |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Timo hat Folgendes geschrieben: Singlereal: +-3.4*10^38 ---- +-1.1*10^-38
Doublereal: +-1.7*10^308 ---- +-2.2*10^-308 Extendetreal: +-1.1*10^4932 ---- +-3.3*10^-4932 Viel interessanter (und relevanter) wäre es zu wissen, wieviele Stellen bei BB signifikant sind. |
||
- Zuletzt bearbeitet von wunderkind am Di, Nov 09, 2004 21:38, insgesamt einmal bearbeitet
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
6 Stellen
also so: Code: [AUSKLAPPEN] 5.32304 534.323 MfG |
||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
so... dieser code kann 2 milliarden tage laufen...Code: [AUSKLAPPEN] Graphics(640, 480, 32, 0)
SetBuffer(BackBuffer()) ms1 = MilliSecs() msec = 0 sec = 0 min = 0 hour = 0 day = 0 While Not KeyHit(1) ms2 = MilliSecs() msec = msec + ms2 - ms1 ms1 = ms2 If (msec >= 1000) Then sec = sec + 1 If (sec >= 60) Then min = min + 1 If (min >= 60) Then hour = hour + 1 If (hour >= 24) Then day = day + 1 hour = hour - 24 End If min = min - 60 End If sec = sec - 60 End If msec = msec - 1000 End If Cls Text(16, 16, day + " " + hour + ":" + min + ":" + sec + "," + msec) Flip() Wend End |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok,
danke, damit hätte ich das PRoblem mit der Uhr ja zukünftig gelöst... naja ich meine du hast es gelöst ![]() |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: so... dieser code kann 2 milliarden tage laufen...
Leider so nicht korrekt, da Millisecs() alle paar 20 Tage das Vorzeichenbit erreicht und dann von Positiv nach negativ (und umgekehrt) umschlägt. Da mein rechner 24/7 läuft hatte ich schon öfter das Problem dass alle Millisecs()-Timer dann plötzlich nicht mehr funktionieren. Aber wer lässt sein Game schon >20 Tage Realzeit laufen... ![]() PS: Beheben lässt sich der Bug wenn man (millisecs() AND $7FFFFFFF) verwendet, da dann dass Vorzeichenbit maskiert ist ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, nach dem posten habe ich das natürlich auch gesehen... das kann mann aber lediglich mit'ne if..then lösen... | ||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Das ganze Multipliziert und der Timer würde auf einen negativen Wert springen.
Ja ich weiß, 25 Tage is wirklich viel für ein Programm oder Spiel, aber z.B. bei einer Wirtschaftssimulation die ja auch mit Timer läuft und an der man meistens eher lange sitzt könnte das doch passieren oder? Bei Windows 98 wars so, dass der Timer der die Millisekunden zählt ein Wert ohne Vorzeichen war, also doppelt so groß wie die Variablen in BlitzBasic werden konnte! Wenn Windows dann 49,7 Tage am Stück lief wurde die Zahl zu groß und Windows ist abgestürzt ![]() ![]() ![]() (aber mal im ernst, wer schafft es win98 50 Tage lang ohne einen Absturz laufen zu lassen? ![]() |
||
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Blade
Das ist doch genau das Problem was ich vorher angesprochen habe. Es müßten aber 25 Tage sein damit sich der Timer ins negative umstellt. Und du denkst mit deiner Lösung geht es? Na ich hoffe mal ![]() Nur wo setzte ich (millisecs() AND $7FFFFFFF) ein? Gleich am Anfang bei (ms1 = MilliSecs()) ? |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group