Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   IF-Anweisung (https://www.delphipraxis.net/164702-if-anweisung.html)

himitsu 25. Nov 2011 18:05

AW: IF-Anweisung
 
Zitat:

Delphi-Quellcode:
    raise Exception.CreateFmt( 'Wert %f ungültig. (0° <= Wert < 360°)', [ Value ] );

Stattdessen könnte man auch einfach den Wertebereich anpassen, denn als Kreisfunktion (unendlich wiederholend) gibt es auch Winkel kleiner 0° und größer/gleich 360°.

Für eine "genaue" Prüfung muß man also eigentlich nur die Werte in den gewünschen Bereich (0 <= w < 360) verschieben.

Delphi-Quellcode:
w := w mod 360;
if w < 0 then Inc(w, 360);

// oder
w := (w mod 360 + 360) mod 360;

// oder
w := w mod 360 + (Max(-Sign(w), 0) * 360);

// oder
w := w mod 360 - Sign(Min(w, 0)) * 360;

// oder
...

Sir Rufo 25. Nov 2011 18:31

AW: IF-Anweisung
 
Was aber nur geht, wenn der Winkel als Integer deklariert ist ... :)

himitsu 25. Nov 2011 18:33

AW: IF-Anweisung
 
Es gibt notfalls auch andere Wege, für reelle Zahlen. (aber hier war'n ja Integer, da geht es sehr einfach)

Sir Rufo 25. Nov 2011 18:39

AW: IF-Anweisung
 
Zitat:

Zitat von himitsu (Beitrag 1137881)
Es gibt notfalls auch andere Wege, für reelle Zahlen. (aber hier war'n ja Integer, da geht es sehr einfach)

Zitat:

Zitat von Slashmob (Beitrag 1137859)
Winkel ist als double deklariert, da ich ihn vorher aus einem maskedit in 1/10° schritten einlesen will.

Wo Integer? :mrgreen:

himitsu 25. Nov 2011 18:52

AW: IF-Anweisung
 
ups, verguckt :oops:

*sekündchen*
Delphi-Quellcode:
w := w - Floor(w / 360) * 360;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz