Ganzzahlen: Unterschied zwischen den Versionen
Pwania (Diskussion | Beiträge) (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…“) |
Pwania (Diskussion | Beiträge) 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 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:
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).