Italia
Wünsche und Anregungen

Wunsch: Neuer relationaler Operator "ungefähr"

 

Frank
Abbing
Ich wünsche mir (in erster Linie per 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 per 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 circa Data Becker vertrieben wurde, war ich in einigen Fällen circa diese Dreiwertige Logik ganz glücklich.

Saluto 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)
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

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 per 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 necessario 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 per 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

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  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

11.616 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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