Seltsamer Fehler beim dividieren von negativen Integern
Übersicht

![]() |
das wurgelBetreff: Seltsamer Fehler beim dividieren von negativen Integern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube ich habe einen noch erstaunlicheren Fehler gefunden als den mit der blauen Schrift neulich (link)
Und zwar gibt dieses Programm hier Code: [AUSKLAPPEN] bla=-1
Print bla/8 Print bla/9 WaitKey() einmal 0 und einmal -1 aus, sowohl bei BlitzPlus als auch bei Blitz3D. Es wird manchmal zur 0 hin gerundet und manchmal ab, die Systematik dahinter hab ich noch nicht so ganz herausgefunden, aber ich glaube nicht, dass das beabsichtigt ist. Wenn das kein Fehler ist dann klärt mich bitte auf. |
||
1 ist ungefähr 3 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du teilst Integer... -1.0/8.0 = -0.125, -1/8 = 0
Das Ergebnis ist wenig verwunderlich und genau so zu erwarten. Sobald das Ergebnis >0.5 wird, ist es Gerundet 1. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehs nicht. Ich teile beide Male einen Integer, nur einmal durch 8 und einmal durch 9. Wo liegt der unterschied zwischen -1/8 und -1/9 !? | ||
1 ist ungefähr 3 |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das interessante ist, dass das nur funktioniert, wenn der Divisor 2^t entspricht und konstant im Code angegeben wird. Ist der Divisor dynamisch (z.B. in einer Variable, aus einer Berechnung etc.), so funktioniert es nicht.
Kleiner Testcode BlitzBasic: [AUSKLAPPEN] Local Bla = -1 Da es wirklich nur mit Zeierpotenzen und konstanten Divisoren funktioniert, tippe ich mal schwer auf einen Fehler im Compiler. |
||
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 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Uhm... na schön, etwas komisch ist es:
BlitzBasic: [AUSKLAPPEN] Print -1/8Irgendwo bei der Rechnung rutscht das Vorzeichen rüber... Könnte tatsächlich ein Bug sein. Ist das auf bb.com verzeichnet? Wäre mir bislang nicht aufgefallen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist die gemeinsamkeit die ich gesucht hab. Hatte schon einges rummprobiert, bin aber nicht dahinter gekommen woran es liegt. Gibts iwo ne Liste mit bekannten Bugs in BlitzBasic? Wenns da nicht schon steht wär ein Bugreport recht sinnvoll.
edit: Kann man sich die Liste auch ansehen wenn man nicht angemeldet ist? Find da iwie keine. Nur das hier: http://www.blitzbasic.com/faq/faq_entry.php?id=49 |
||
1 ist ungefähr 3 |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] bla# = -1 Print bla/8 Print bla/9 WaitKey End Mach doch einfach aus bla eine Floatvariable dann gehts!! Also nicht bla = -1 sondern bla# = -1 lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist uns allen klar, jamagin, hier geht es ja um das fehlerhafte verhalten wenn man ohne Nachkommastellen rechnen will. | ||
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 |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BladeRunner
Aha, wüßte aber nicht wo ich sowas brauchen würde! Na dann hab ich damit nichts zu tun! Trotzdem -1/9 = 0 bei Integer, wohin soll gerundet werden? Werde mich wieder zurückziehen...! lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nuja, es gibt genug Fälle wo man nur gerundete Ergebnisse braucht. Zum Beispiel wenn es um Indizes von Arrays geht - und wenn du nicht von der Nullposition des Arrays iterierst kann auch mal eine negative Berechnung vonnöten sein.
Edit: kaufmännisch gerundet wäre bei 0.5, d.h. -0.5 = -1 ; -0.4 = 0. Edit 2:Habe zum Thema einen BugReport auf bb.com verfasst. |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group