| |
|
|
- Seite 1 - |
|
Frank Abbing | Ich wünsche mir (in erster Linie für Floats) den neuen relationalen Operator: Ungefähr bzw. Fast gleich. Also quasi ein Gleichheitszeichen mit einer frei einstellbaren Toleranz, z.B.:
~=
oder
><
Und dazu eine Funktion, um den Toleranzwert (in positiver und gleichzeitig auch negativer Richtung) zu setzen, wie z.B.:
Set(About, 0.0001)
Das ganze wäre auch sinnvoll für Integer-Zahlen. In dem Fall setzt man eben ganzzahlige Werte:
Set(About,3)
Hierzu bitte auch lesen: [web]https://www.rgh-soft.de/forum01/read.php?f=7&i=12824&t=12824[/web] und [web]https://de.wikipedia.org/wiki/Gleichheitszeichen[/web] |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Jörg Sellmeyer | |
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.11.2007 ▲ |
|
|
|
|
Frank Abbing | Diese Lösungen gehen natürlich, aber sie sind allesamt nicht effizient. Ein zusätzlicher relationaler Operator wäre sicher leicht einzubauen und würde nicht weiter stören. Mich persönlich würden solche rudimentären Erweiterungen glücklicher machen als die x-te Zusammenfassung von 2-3 APIs. Aber bitte... |
|
|
| |
|
|
|
RGH | Einen neuen Operator, der in der Mathematik völlig unbekannt ist, halte ich für wenig hilfreich.
Eher könnte ich mir eine Set-Funktion vorstellen, mit der ich die Genauigkeit von Float-Vergleichen einstellen kann, etwa Set(IrgendeinSinnvollerName, 7). Auch sinnvoll wäre vielleicht eine Funktion Test(wert!, von!, bis!), mit der überprüft wird, ob ein Wert zwischen den genannten Grenzen liegt.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 13.11.2007 ▲ |
|
|
|
|
Frank Abbing |
Einen neuen Operator, der in der Mathematik völlig unbekannt ist, halte ich für wenig hilfreich.
Trend-Setting gehört wohl nicht zu deinen Stärken. Wie auch immer, deine Vorschläge scheinen mir zumindest ein wenig entgegen zu kommen und ich würde deren Einbau daher natürlich begrüssen. |
|
|
| |
|
|
|
Michael Wodrich |
Einen neuen Operator, der in der Mathematik völlig unbekannt ist, halte ich für wenig hilfreich.
Als Operator mag das ja stimmen, aber in sehr vielen Quellcodes geistern die Gamma-Korrekturwerte herum. Da könnte man sich mit Franks Wunsch so einiges verbessern....
Nur weil die Mathematiker noch nicht auf so eine Lösung gekommen sind muß sie ja nicht schlecht sein..
Wie wäre es mit Toleranz für Set und Funktion..... (engl.. Tolerance)
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.11.2007 ▲ |
|
|
|
|
Frank Abbing |
Als Operator mag das ja stimmen, aber in sehr vielen Quellcodes geistern die Gamma-Korrekturwerte herum. Da könnte man sich mit Franks Wunsch so einiges verbessern....
Nur weil die Mathematiker noch nicht auf so eine Lösung gekommen sind muß sie ja nicht schlecht sein..
Endlich mal Zustimmung. Die Was-der-Bauer-nicht-kennt-isst-er-nicht-Haltung hier im Thread fand ich auch schon etwas erschreckend. |
|
|
| |
|
|
|
RGH | Ich habe mir mal ausführliche Gedanken zu einem ungefähren Vergleich gemacht:
Zuallererst: Ich sehe ein, dass so etwas für mancherlei Zwecke sinnvoll ist und von daher auch möglichst flexibel sein sollte.
Allerdings scheiden daher einige der hier vorgeschlagenen Lösungen aus: Gleichheitszeichen durch Set-Funktion gesteuert: Das wäre zwar flexibel handhabbar, macht den Code aber schwieriger zu lesen. Wenn man eine eine Prozedur betrachtet, weiß man nie, was das = denn nun bedeutet: Gleicheit oder nur eine irgendwie geartete Ähnlichkeit der Werte. Da müsste man schon den ganzen Code durchsuchen, ob irgendwo eine entsprechende Set-Funktion steht und welche dieser Funktionen bei Aufruf der Prozedur gerade gültig sind. Gleich sollte schon Gleich bedeuten. Ein neuer Operator, etwa ~: Damit dieser flexibel handhabbar wäre, müßte der Grad der Genauigkeit des Vergleichs auch hier über eine Set-Funktion eingestellt werden, so dass dieser das gleiche Problem wie das erweiterte Gleichheitszeichen hat, mit dem Unterschied, dass man nun weiß, dass die exakte Gleichheit hier vermutlich nicht in Frage kommt.
Als Lösung bietet sich daher eine neue Funktion an: etwa nearly(wert1!, wert2!, genauigkeit%) wobei Genauigkeit die gleiche Bedeutung wie bei round(wert!, genauigkeit%) hat, und die Anzahl der Nachkommastellen angibt, die beim Vergleich wirken. Diese Zahl kann auch negativ sein, um etwa bei großen Zahlen die hinteren Stellen nicht zu berücksichtigen. nearly(5,999, 6,004, 2) würde dann 1 (=wahr) ergeben, da beide Werte auf 2 Stellen gerundet gleich sind, nämlich 6,00. Parallel dazu wäre etwa die Funktion between(wert!, von!, bis!) denkbar, die 1 zurückggibt wenn wert! zwischen von! und bis! liegt: von! <= wert! <= bis! Abrunden könnte man das Ganze noch mit range(wert!, min!, max!), das den Wert auf die Grenzen beschneidet, also min! zurückgibt, wenn der Wert kleiner als min! ist und max! zurückgibt, wenn er größer als max! ist. Liegt er dazwischen, wird er unverändert zurückgegeben.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 18.11.2007 ▲ |
|
|
|
|
| Jau das riecht auch schon fast nach einer Intersektionskontrolle für Rechtecke, quasi zwei betweens, somit könnte man eine proc aus 7 Zeilen in eine proc aus 5 Zeilen umschreiben. Vielleicht bringst Du dem between aber auch auch noch optionale Mehrparameter bei: KompilierenMarkierenSeparieren
if between(x!,y!,10,10,200,200)//prüft ob Punkt x! y! im Rechteck 10,10 - 200,200 liegt
if between(x!,y!,x!+50,y!+50,10,10,200,200)// prüft ob Rechteck x! y! - x!+50 y!+50 im Rechteck 10 10 200 200 liegt.
Das range begrüsse ich ebenfalls sehr! |
|
|
| |
|
|
|
Michael Wodrich | between betweenXY betweenXYZ
Dann hätten wir sie gleich alle.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 20.11.2007 ▲ |
|
|
|
|
| Genau XYZ hatte ich glatt vergessen! |
|
|
| |
|
|
|
Jac de Lad | Dann bau bitte gleich noch Ceil ein, das vermisse ich schon lange! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 20.11.2007 ▲ |
|
|
|
|
| Vielleicht sollten wir einfach ein Rechteck zeichnen und die Mitglieder darauf abbilden. |
|
|
| |
|
|