Dienstag, 8. November 2011

Arbeiten mit Ganzzahl und Kommazahlen / working with integers and decimals

Für die Arbeit mit Ganz- und Kommazahlen stellt uns Visual Foxpro ein paar Funktionen zur Verfügung, mit deren Hilfe wir Vorzeichen sowie Vor- und Nachkommastellen extrahieren können. Je nach Aufgabenstellung sind diese Funktionen recht hilfreich.

Im einzelnen dreht es sich um die folgenden Funktionen: INT(), ABS(), CEILING(), FLOOR() und MOD().

Der folgende Mustercode soll die Arbeitsweise der hier vorgestellten Funktionen veranschaulichen. Als Basis dient eine negative Kommazahl. Dies ermöglicht das Aufzeigen evtl auftretender Fallstricke. Natürlich nur für den Fall, das wir vergessen haben sollten, wie mit negativen Zahlenwerten umgegangen wird.... ;-)

An dieser Stelle noch ein Verweis auf einen älteren Blogeintrag zum Thema Modulo-Berechnungen, der dies hier ganz gut ergänzt:
http://tomsvfpblog.blogspot.com/2007/12/wieso-verhlt-sich-die-modulo-funktion.html

CLEAR 
lnNumeric = -123.456
?[Original                   :]
??lnNumeric

* Entfernen der Nachkommastellen / remove decimal places            
?[INT( lnNumeric )           :]
??INT( lnNumeric )

* Vorzeichenlose Ganzzahl / unsigned integer                        
?[ABS( lnNumeric )           :]
??ABS( lnNumeric )

* Nächst höhere Vorzeichen-Ganzzahl / next higher signed integer    
?[CEILING( lnNumeric )       :]
??CEILING( lnNumeric )

* Nächst niedrigere Vorzeichen-Ganzzahl / next lower signed integer    
?[FLOOR( lnNumeric )         :]
??FLOOR( lnNumeric )

* extrahieren der Nachkommastellen / extracting decimal places        
?[MOD( lnNumeric , 1 )       :]
??MOD( lnNumeric , 1 )

* Nächst höhere Ganzzahl / next higher integer                        
?[CEILING( ABS( lnNumeric ) ):]
??CEILING( ABS( lnNumeric ) )

* Nächst niedrigere Ganzzahl / next lower integer                    
?[FLOOR( ABS( lnNumeric ) )  :]
??FLOOR( ABS( lnNumeric ) )

* extrahieren der Nachkommastellen / extracting decimal places        
?[MOD( ABS( lnNumeric ) , 1 ):]
??MOD( ABS( lnNumeric ) , 1 )

Keine Kommentare:

Kommentar veröffentlichen