2016-07-11 19 views
2

Ich schrieb den folgenden einfachen Code, der die Eingabe von Benutzer für N1 und N2 nimmt und addiert sie und gibt sie als Ausgabe (N3). Es gibt ein Problem damit, dass es jeweils aufrundet der Eingabe statt nur die Zahlen zu nehmen.Excel Zahlen mit zwei Dezimalstellen

Einfaches Beispiel: N1 = 25.5, N2 = 25.5 Richtige Antwort = 51 aber die Antwort, die es gibt, ist 52. Ich bin neu im Programmieren, so würde jede Hilfe schätzen, die ich bekommen kann.

Ich möchte, dass N3 bis zu 6 Dezimalstellen anzeigt, ohne die einzelnen Eingänge von N1 und N2 zum Zeitpunkt der Eingabe zu runden.

Sub InputVariable() 

    Dim N1 As Integer 
    Dim N2 As Integer 
    Dim N3 As Integer 
    N1 = InputBox("Enter 1st number") 
    N2 = InputBox("Enter 2nd number") 
    N3 = N1 + N2 
    MsgBox ("Your total is " & N3) 
End Sub 

Antwort

4

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)

+0

@InWoods Ich bearbeitet in ein paar mehr Informationen über das Format Funktion – arcadeprecinct

+0

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

1

wie Inwoods erwähnt, müssen Sie N1, N2 und N3 Doppel Typen sein, dann können Sie die Ausgabe in der print-Anweisung werfen, wie folgt aus:

MsgBox ("Your total is " & Format(N3, "Standard")) 

die Standardformatierung enthält zwei Dezimalstellen.

+0

Danke für die Hilfe Leute :) Problem gelöst! – InWoods

+0

Dies funktioniert perfekt für ein anderes Problem, mit dem ich konfrontiert war. Danke :) Können Sie mir sagen, ob es ein Wörterbuch gibt, auf das wir verweisen können, um die verschiedenen Formatwerte zu finden, oder ist es aufgrund der Erfahrung, dass Sie sagen, dass es Standard sein sollte? Ty für die Hilfe noch einmal. – InWoods

+0

Nicht, dass ich weiß, obwohl Sie mit dem Format in Excel umgehen können, um zu sehen, was die Ausgabe wird. Schreibe ein paar Zahlen in eine Zelle, gehe dann zum Home-Ribbon -> Zahlenformat (Dropdown-Liste) -> "Weitere Zahlenformate" (ganz unten) -> "Benutzerdefiniert" (In der Kategorieliste) -> Wähle dann oder bearbeiten Sie den Typ, bis Sie zufrieden sind. – Carmelid

Verwandte Themen