Compare mit Floats
Übersicht

SchoppyBetreff: Compare mit Floats |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
habe zum sortieren immer die Compare Methode genutzt. Hat bei Int immer wunderbar funktioniert aber jetzt müsste ich nach Floats Sortieren. Wenn ich bei Compare als Rückgabe Float nehme kommt es zum Absturz. Hier mal der kleine Beispiel Code: Code: [AUSKLAPPEN] SuperStrict Global list:TList = New TList Type TTest Field z:Float Function Create(_z:Float) Local t:TTest = New TTest t.z = _z list.AddLast(t) End Function Function Show() For Local t:TTest = EachIn list Print(t.z) Next Print("") Print("---") Print("") End Function '* Compare-Methode für dieses Objekt anders definieren! Method Compare:Int(withObject:Object) Return Self.z - TTest(withObject).z End Method End Type '* Erstellen: TTest.Create(0.69) TTest.Create(0.22) TTest.Create(0.33) '* Unsortiert: TTest.Show() '* Sortieren: list.Sort() TTest.Show() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] '* Compare-Methode für dieses Objekt anders definieren!
Method Compare:Int(withObject:Object) Local erg:Float = Self.z - TTest(withObject).z If erg > 0 Then Return 1 If erg < 0 Then Return - 1 Return 0 'Return Self.z - TTest(withObject).z End Method Nur eine Kleinigkeit- beim Konvertieren zu Integer wird eben die Nachkommastelle abgeschnitten, und damit ist dein Ergebnis bei kleinen Zahlen immer 0 ![]() |
||
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 |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jop - Compare methoden sind complett selbst schreibbar.
WEnn ichs richtig verstehe, ist -1 = Self ist kleiner, 0 = withObject und Self sind gleichgroß und 1 - self ist größer. (je kleiner, desto weiter vorne in der liste!) Wie du die werte vergibst, ist deine sache. Ich würde es bei floatzahlen genau wie BR machen - mit dem unterschied, das ich faul bin: BlitzMax: [AUSKLAPPEN] Method Compare:Int(withObject:Object) Ob die abfrage, ob es ein TTest objekt ist, wirklch lohnt, weiß ich nicht. Ich habs allgemein hin immer für sauberer gehalten. Meine änderungs nutzt ausserdem Sgn - es liefert das Vorzeichen einer zahl (-1, 0 oder 1) - also genau die rückgabe, die Compare erwartet ![]() |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sgn ist ungeeignet, weil es auch bei 0, also Gleichheit, eine 1 liefert. | ||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, Sgn liefert -1 bei Zahlen kleiner als 0, 0 bei 0 und 1 bei Zahlen größer als 0.
BlitzMax: [AUSKLAPPEN] Print Sgn(-1) Lg |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group