| |
|
|
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] |
|
|
| |
|
|
|
Hubert Binnewies | Finde ich auch sehr sinnvoll.....
Ich habe so ein Konstrukt auch schon mal verwendet. Damals zu Zeiten des ATARI ST gab es in seinem Betriebssystem (damals TOS genannt) eine Systemvariable die eine solche dreiwertige Logik enthielt.
Sie enthielt eine 0 bei : Diskette nicht gewechselt, eine 1 bei Diskette gewechselt und eine 2 bei Diskette möglicherweise gewechselt.
Als ich damals mit einem Freund das Tools ST schrieb, das über Data Becker vertrieben wurde, war ich in einigen Fällen über diese Dreiwertige Logik ganz glücklich.
Gruß Hubert |
|
|
| WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 10.11.2007 ▲ |
|
|
|
|
Frank Abbing | |
|
| |
|
|
|
| Ich emfinde diesen Operator als Quatsch. |
|
|
| |
|
|
|
| Ist ungefähr so wie das berühmte Jaein von Dostojewski |
|
|
| |
|
|
|
Jörg Sellmeyer | Sowas vielleicht? KompilierenMarkierenSeparieren
Proc RoundAbout
Parameters F!,n%,G&
Declare r%
r% = Round(F!,n%) = G&
Print Str$(F!) + = + Str$(G&) + : + Str$(r%)
Return r%
EndProc
RoundAbout(0.99993,1,5)
RoundAbout(1.09993,1,2)
RoundAbout(2.99993,3,3)
RoundAbout(0.99093,1,1)
WaitInput
Aber dafür ne Funktion verbraten? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.11.2007 ▲ |
|
|
|
|
Frank Abbing | @Jörg, keine Funktion zum Runden, sondern eine Bedingung! @ iF, gerade von dir hätte ich erwartet, eine sinnvolle Vereinfachung zu erkennen.
Natürlich lässt sich das auch so abfragen (Beispiel): KompilierenMarkierenSeparieren Aber die Bedingung liesse sich visuell sehr vereinfachen und die Abfrage an sich schneller gestalten. Ich benutze hier mal mein favorisiertes >< als fast gleich: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
| Nun als Vereinfachung erkenne ich es sehrwohl, nur das Sinnvoll reicht mir hier für eine Implementierung nicht ganz aus - einfach weil ich selbst noch keinen Fall hatte bei dem ich es hätte brauchen können. Kann aber gut sein das ich hier nur etwas übersehe - kann mich halt nur nicht erinnern derartiges mal irgendwo benötigt zu haben. |
|
|
| |
|
|
|
Frank Abbing | Dann hantierst du nicht oft mit Floats. Versuch doch nur mal, zwei Floats auf Gleichheit zu prüfen. Das allein kann schon böse in die Hose gehen, wenn du mit den Zahlen vorher gerechnet hast. Auch für den Fall wäre der neue Operator geeignet. |
|
|
| |
|
|
|
RGH | Hallo Frank, Dein Beispiel ginge auch so: KompilierenMarkierenSeparieren Es hat schon seinen Sinn, dass die Round-Funktion auf eine beliebige Anzahl Nachkommastellen runden kann! ;)
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: Ich handtiere oft mit Floats, auch bei der Kalkulation von Zahlenreihen und Tabellen wie z.B. Preisberechnungsblättern und/oder Abrechnungsformularen. Ich nutze wenn überhaupt Round. |
|
|
| |
|
|
|
Frank Abbing |
Es hat schon seinen Sinn, dass die Round-Funktion auf eine beliebige Anzahl Nachkommastellen runden kann!
Mag sein. Aber bitte erstelle auch mal ein simples Beispiel, um zwei beliebige Floats auf Gleichheit zu prüfen. Zwei Floats, die nicht gerundet werden dürfen. |
|
|
| |
|
|