Ganzzahlen: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Ganzzahlen sind natürliche Zahlen, also Zahlen, die keine Nachkommastellen haben. In der Programmierung werden Ganzzahlen zum Beispiel für Indizes in Schlei…“)
 
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:vba-wiki]]
Ganzzahlen sind natürliche Zahlen, also Zahlen, die keine Nachkommastellen haben.
Ganzzahlen sind natürliche Zahlen, also Zahlen, die keine Nachkommastellen haben.


In der Programmierung werden Ganzzahlen zum Beispiel für Indizes in Schleifen eingesetzt.
In der Programmierung werden Ganzzahlen zum Beispiel für Indizes in Schleifen eingesetzt.


Siehe auch: [[Rechnen mit Zahlen und Werten]]
== Rechnen mit Ganzzahlen  ==
 
Siehe auch [[Arithmetische Operatoren und Rechenfunktionen]].
 
=== Division ===
 
Da das Ergebnis einer Ganzzahligen Division sehr häufig keine Ganzzahl ist, sollten Sie das Ergebnis in eine Variable mit einem Gleitkomma-Datentyp entgegennehmen:
 
    Dim dblResult As Double
   
    dblResult = 3 / 2
    Debug.Print dblResult    ' Ergibt 1,5
 
==== Ganzzahlige Division ====
 
Wenn Sie ausschließlich an dem ganzzahligen Wert des Ergebnis interessiert sind, sollten Sie statt des '/'-Operators den '\'-Operator verwenden. Dieser gibt den ganzzahligen Wert einer Division zurück, ohne zu runden:
 
    Dim intResult As Integer
   
    intResult = 3 \ 2
    Debug.Print intResult      ' ergibt 1
    intResult = 5 \ 2
    Debug.Print intResult      ' ergibt 2
   
    ' Denn:
    intResult = 3 / 2  ' ergibt 2 !
    intResult = 5 / 2  ' ergibt ebenfalls 2 !?!
 
Warum die beiden letzten Ergebnisse (3 / 2 und 5 / 2) beide 2 ergeben, lesen Sie im Abschnitt [[#Runden|Runden]]!
 
==== Rest einer Ganzzahligen Division ====
 
Der Rest einer Ganzzahligen Division wird mit dem Operator <code>Mod</code> zurückgegeben:
 
Debug.Print 2 \ 3            ' 0
Debug.Print 2 Mod 3          ' 2
entspricht:
2 : 3 = 0  (ganzzahliger Teil der Division)
0
-
2  (Rest)
 
Debug.Print 3 \ 2            ' 1
Debug.Print 3 Mod 2          ' 1
entspricht:
3 : 2 = 1  (ganzzahliger Teil der Division)
2
-
1  (Rest)
 
Debug.Print 127 \ 4          ' 31
Debug.Print 127 Mod 4        ' 3
entspricht:
127 : 4 = 31  (ganzzahliger Teil der Division)
124
-
3  (Rest)
 
== Arbeiten mit Ganzzahlen ==
 
=== Umwandeln ===
 
Wenn Sie einer Ganzzahl einen Wert mit Nachkommastellen zuweisen, wird diese automatisch in eine Ganzzahl umgewandelt. Alternativ können Sie auch die Funktionen <code>CInt()</code> bzw. <code>CLng()</code> verwenden:
 
Dim intResult As Integer
Dim lngResult As Long
intResult = 5 / 2          ' ergibt 2
intResult = Round(5 / 2)  ' ergibt 2
intResult = CInt(5 / 2)    ' ergibt 2
lngResult = CLng(5 / 2)    ' ergibt 2
 
Wenn eine Gleitkommazahl in eine Ganzzahl umgewandelt wird (entweder automatisch oder mit den Funktionen <code>CInt()</code> bzw. <code>CLng()</code>), wird das Ergebnis gerundet:
 
=== Runden ===
 
Siehe [[Arithmetische Operatoren und Rechenfunktionen#Runden|Arithmetische Operatoren und Rechenfunktionen: Runden]]
 
=== Nachkommastellen abschneiden ===
 
==== Positive Zahlen ====
 
Das englisch 'Truncate' genannte Verfahren, die Nachkommastellen einer Kommazahl abzuschneiden, kann mit folgenden Funktionen erreicht werden:
 
    Debug.Print Int(12.7)      ' 12
    Debug.Print Fix(12.7)      ' 12
 
Die Nachkommastellen werden also nicht gerundet, sondern entfernt. Übrig bleibt die vorangestellte Ganzzahl:
 
[[Datei:IntFixPositive.png|350px]]
 
==== Negative Zahlen ====
 
Der Unterschied zwischen <code>Int()</code> und <code>Fix()</code> zeigt sich beim Umwandeln von negativen Werten:
 
    Debug.Print Int(-12.7)      ' -13
    Debug.Print Int(-12.1)      ' -13
    Debug.Print Fix(-12.7)      ' -12
    Debug.Print Fix(-12.1)      ' -12
 
* Die 'Int'-Funktion schneidet bei negativen Zahlen die Nachkommastellen ab und '''erniedrigt''' auf die nächste Ganzzahl (-13 ist niedriger als -12).
* Die 'Fix'-Funktion schneidet ebenfalls bei negativen Zahlen die Nachkommastellen ab und '''erhöht''' auf die nächste Ganzzahl (-12 ist höher als -13).
 
[[Datei:IntFixNegative.png|350px]]

Aktuelle Version vom 28. Januar 2023, 00:31 Uhr

Ganzzahlen sind natürliche Zahlen, also Zahlen, die keine Nachkommastellen haben.

In der Programmierung werden Ganzzahlen zum Beispiel für Indizes in Schleifen eingesetzt.

Rechnen mit Ganzzahlen

Siehe auch Arithmetische Operatoren und Rechenfunktionen.

Division

Da das Ergebnis einer Ganzzahligen Division sehr häufig keine Ganzzahl ist, sollten Sie das Ergebnis in eine Variable mit einem Gleitkomma-Datentyp entgegennehmen:

   Dim dblResult As Double
   
   dblResult = 3 / 2
   Debug.Print dblResult     ' Ergibt 1,5

Ganzzahlige Division

Wenn Sie ausschließlich an dem ganzzahligen Wert des Ergebnis interessiert sind, sollten Sie statt des '/'-Operators den '\'-Operator verwenden. Dieser gibt den ganzzahligen Wert einer Division zurück, ohne zu runden:

   Dim intResult As Integer
   
   intResult = 3 \ 2
   Debug.Print intResult       ' ergibt 1
   intResult = 5 \ 2
   Debug.Print intResult       ' ergibt 2
   
   ' Denn:
   intResult = 3 / 2   ' ergibt 2 !
   intResult = 5 / 2   ' ergibt ebenfalls 2 !?!

Warum die beiden letzten Ergebnisse (3 / 2 und 5 / 2) beide 2 ergeben, lesen Sie im Abschnitt Runden!

Rest einer Ganzzahligen Division

Der Rest einer Ganzzahligen Division wird mit dem Operator Mod zurückgegeben:

Debug.Print 2 \ 3            ' 0
Debug.Print 2 Mod 3          ' 2

entspricht:

2 : 3 = 0   (ganzzahliger Teil der Division)
0
-
2   (Rest)
Debug.Print 3 \ 2            ' 1
Debug.Print 3 Mod 2          ' 1

entspricht:

3 : 2 = 1   (ganzzahliger Teil der Division)
2
-
1   (Rest)
Debug.Print 127 \ 4           ' 31
Debug.Print 127 Mod 4         ' 3

entspricht:

127 : 4 = 31   (ganzzahliger Teil der Division)
124
-
3   (Rest)

Arbeiten mit Ganzzahlen

Umwandeln

Wenn Sie einer Ganzzahl einen Wert mit Nachkommastellen zuweisen, wird diese automatisch in eine Ganzzahl umgewandelt. Alternativ können Sie auch die Funktionen CInt() bzw. CLng() verwenden:

Dim intResult As Integer
Dim lngResult As Long

intResult = 5 / 2          ' ergibt 2
intResult = Round(5 / 2)   ' ergibt 2
intResult = CInt(5 / 2)    ' ergibt 2
lngResult = CLng(5 / 2)    ' ergibt 2

Wenn eine Gleitkommazahl in eine Ganzzahl umgewandelt wird (entweder automatisch oder mit den Funktionen CInt() bzw. CLng()), wird das Ergebnis gerundet:

Runden

Siehe Arithmetische Operatoren und Rechenfunktionen: Runden

Nachkommastellen abschneiden

Positive Zahlen

Das englisch 'Truncate' genannte Verfahren, die Nachkommastellen einer Kommazahl abzuschneiden, kann mit folgenden Funktionen erreicht werden:

   Debug.Print Int(12.7)       ' 12
   Debug.Print Fix(12.7)       ' 12

Die Nachkommastellen werden also nicht gerundet, sondern entfernt. Übrig bleibt die vorangestellte Ganzzahl:

IntFixPositive.png

Negative Zahlen

Der Unterschied zwischen Int() und Fix() zeigt sich beim Umwandeln von negativen Werten:

   Debug.Print Int(-12.7)      ' -13
   Debug.Print Int(-12.1)      ' -13
   Debug.Print Fix(-12.7)      ' -12
   Debug.Print Fix(-12.1)      ' -12
  • Die 'Int'-Funktion schneidet bei negativen Zahlen die Nachkommastellen ab und erniedrigt auf die nächste Ganzzahl (-13 ist niedriger als -12).
  • Die 'Fix'-Funktion schneidet ebenfalls bei negativen Zahlen die Nachkommastellen ab und erhöht auf die nächste Ganzzahl (-12 ist höher als -13).

IntFixNegative.png