Sie müssen den Datentyp Double
verwenden. Wenn Sie einen Integer-Typ (Integer
oder) verwenden, werden die Zahlen unter N1 = InputBox(...)
abgerundet, da in den Variablen keine ganzzahligen Werte gespeichert werden können.
edit: Double
steht für doppelte Genauigkeit (8 Byte) im Vergleich zu einfacher Genauigkeit (4 Byte). Es ist interessant zu bemerken, dass Double
das binäre Zahlenformat verwendet, es kann keine genauen Werte wie 0,1 speichern (genau wie das Dezimalsystem nicht 1/3 ausdrücken kann, egal wie viele Ziffern Sie haben).
Wenn Sie wirklich genaue Berechnungen mit Dezimalzahlen durchführen müssen, gibt es das Decimal
Format, das Sie verwenden können. Sie können es nicht deklarieren, aber Sie können eine Zahl in Dezimalzahlen umwandeln und sie in einem Variant
speichern. Sehen Sie folgendes Beispiel:
Sub precisionTest()
Dim i As Long
Dim dbl As Double
Dim dblResult As Double
Dim dec As Variant
Dim decResult As Variant
dblResult = 0
decResult = 0
dbl = 0.00001
dec = CDec(0.00001)
For i = 1 To 100000
dblResult = dblResult + dbl
decResult = decResult + dec
Next i
MsgBox "Double result: " & dblResult & vbCr & "Decimal result: " & decResult
End Sub
edit2: Rounding und Formatierung von Zahlen: können Sie verwenden, um die Format
Funktion Saiten Ihrer Nummer zu erstellen, ohne den Wert zu ändern (nur zu Anzeigezwecken). Gültige Formate aussehen „0 ##.“, Wo 0
bedeutet, dass die Dezimalstelle immer angezeigt wird und #
bedeutet es angezeigt, wenn es nicht Null:
Sub formatTest()
Dim dbl As Double
Dim dbl2 As Double
Dim dbl3 As Double
dbl = 1.234
dbl2 = 1.2
dbl3 = 0.1
MsgBox "Format(1.234,""0.##"") = " & Format(dbl, "0.##") & vbCr _
& "Format(1.234,""0.00"") = " & Format(dbl, "0.00") & vbCr _
& "Format(1.2,""0.##"") = " & Format(dbl2, "0.##") & vbCr _
& "Format(1.2,""0.00"") = " & Format(dbl2, "0.00") & vbCr _
& "Format(0.1,""#.##"") = " & Format(dbl3, "#.##") & vbCr _
& "Format(0.1,""0.00"") = " & Format(dbl3, "0.00") & vbCr
End Sub
Wenn Sie tatsächlich rund Ihre Zahlen möchten, verwenden Sie Round(number,decimalplaces)
@InWoods Ich bearbeitet in ein paar mehr Informationen über das Format Funktion – arcadeprecinct
Vielen Dank für Ihre Hilfe @arcadeprecinct es funktioniert perfekt und danke für die Erklärung in so vielen Details. Ich habe wirklich viel gelernt :) – InWoods