Excel-Zahlen mit zwei Dezimalstellen
Schrieb ich folgenden einfachen code, der die Eingabe von Benutzer, die für N1 und N2 und fügt Sie auf und gibt Sie als Ausgang (N3).Es gibt ein Problem mit diesem, dass, es rundet jedes der Eingang, anstatt einfach nur die zahlen.
Einfaches Beispiel: N1 = 25.5, N2 = 25.5 Richtige Antwort = 51 aber die Antwort, die es gibt, ist die 52. Ich bin neu in der Programmierung, so würde jede Hilfe dankbar die ich bekommen kann.
Möchte ich es zur Anzeige N3 bis zu 6 Dezimalstellen ohne Rundung einzelnen Eingänge von der N1 und N2 in der Zeit der Einnahme Eingänge.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
Double
Daten geben. Wenn Sie ein integer-Typ (Integer
oderLong
) es werden Runde die zahlen aufN1 = InputBox(...)
weil es nicht speichern kann nicht-ganzzahlige Werte in den Variablen.edit:
Double
steht für double precision (8 byte) im Vergleich zu einfacher Genauigkeit (4 byte). Es ist interessant zu beachten, dass daDouble
verwendet das binäre Zahlenformat kann es nicht speichern die genauen Werte wie 0.1 (genau wie die dezimal-system kann nicht Ausdrücken, 1/3, egal wie viele Ziffern, die Sie haben).Wenn Sie tun müssen, um wirklich präzise Berechnungen mit dezimal-zahlen, es gibt die
Decimal
- format, die Sie verwenden können. Man kann nicht wirklich erklären, aber Sie können konvertieren einer Zahl in dezimal und speichern Sie es in einemVariant
. Siehe dieses Beispiel:edit2: Runden und formatieren von zahlen: können Sie die
Format
Funktion zu erstellen, die Saiten Ihrer Anzahl, ohne den Wert ändern (nur zur Darstellung). Gültige Formate Aussehen, "0.##" wo0
bedeutet, dass die Dezimalstelle wird immer angezeigt und#
bedeutet, ist es angezeigt, falls nicht null:Wenn Sie wollen, um tatsächlich zu Runden Ihre Zahl, verwenden Sie
Round(number,decimalplaces)
#
immer verlassen dezimal-Trennzeichen (in meinem Fall,
) im Ergebnis, wieFormat(0,"0.##")
zeigt0,
undFormat(0,"#.##")
zeigt,
Als InWoods erwähnt, müssen Sie N1, N2 und N3 werden double-Typen, dann können Sie werfen Sie die Ausgabe in der print-Anweisung wie folgt:
Die standard-Formatierung enthält zwei Nachkommastellen.