Deutsch
Wünsche und Anregungen

Wunsch: Neuer relationaler Operator "ungefähr"

 

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]
 
08.11.2007  
 




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
*Hochschieb*
 
13.11.2007  
 



Ich emfinde diesen Operator als Quatsch.
 
13.11.2007  
 



Ist ungefähr so wie das berühmte Jaein von Dostojewski
 
13.11.2007  
 




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
x!=1.573525
y!=1.573524

WhileLoop 100

    If ((y!>=x!-0.0000001) and (y!<=x!+0.0000001))

        Print x!, y!

    EndIf

    x!=x!+0.0000001
    y!=y!+0.00000015

EndWhile


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
x!=1.573525
y!=1.573524
Set(About, 0.0000001)

WhileLoop 100

    If y!><x!

        Print x!, y!

    EndIf

    x!=x!+0.0000001
    y!=y!+0.00000015

EndWhile

 
13.11.2007  
 



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.
 
13.11.2007  
 




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.
 
13.11.2007  
 




RGH
Hallo Frank,
Dein Beispiel ginge auch so:
KompilierenMarkierenSeparieren
Var x!=1.573525
Var y!=1.573524

WhileLoop 100

    If Round(y!,7) = Round(x!,7)

        Print x!, y!

    EndIf

    x!=x!+0.0000001
    y!=y!+0.00000015

EndWhile


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.
 
13.11.2007  
 




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.
 
13.11.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.720 Betrachtungen

Unbenanntvor 0 min.
Walter03.12.2020
iF01.12.2014
holmol9330.05.2013
RICOSCH29.11.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie