Fehler nicht nachvollziehbar
Hi Thomas,
Ich übertrage aus einem Zahlenstring (Single) Werte in eine
Zelle mit folgendem Code:
Tabelle1.Cells(2, 1).Value = Round(sngOutput(1), 3)
Der vorher berechnete Wert von sngOutput(1) ist 0,7153076.
Mit Round(sngOutput(1), 3) möchte ich den Wert auf 3
Nachkommastellen runden, d.h. auf 0,715.
In die Zelle auf dem Excel Arbeitsblatt wird aber 0,714999973
übertragen.
Warum ist das so?
k.A. ich kann das Problem in XL97 und XL2002 auf WinXP nicht nachvollziehen,
Option Explicit
Sub tt()
Dim sngOutput(1) As Single
sngOutput(1) = 0.7153076
Tabelle1.Cells(2, 1).Value = Application.WorksheetFunction.Round(sngOutput(1), 3)
End Sub
Getestet mit XL97 und XL2002, in A2 erscheint wie geplant 0,715
Formatiere ich A2 als Zahl mit 5 Nachkommastellen erscheint in A2 0,71500
XL97-Vba kennt kein Round, auf welche XL-Version beziehst du dich?
Ist es XL auf einem MAC oder Windows-PC?
Welches Betriebssystem, Version?
Nachfolgend Code und Ergebnis mit mehreren Zahlen.
Gruß
Reinhard
Code:
Sub ttt()
' Spalte B mit \>=3 Nachkommastellen formatieren
Dim sngOutput(1) As Single, Z As Byte
For Z = 1 To 6
sngOutput(1) = Rnd()
Tabelle1.Cells(Z, 1).Value = sngOutput(1)
Tabelle1.Cells(Z, 2).Value = Application.WorksheetFunction.Round(sngOutput(1), 3)
Next Z
End Sub
erzeugt dieses Ergebnis:
Tabellenblatt: [Mappe1]!Tabelle1
│ A │ B │
──┼────────────┼─────────┤
1 │ 0,70554751 │ 0,70600 │
──┼────────────┼─────────┤
2 │ 0,53342402 │ 0,53300 │
──┼────────────┼─────────┤
3 │ 0,57951862 │ 0,58000 │
──┼────────────┼─────────┤
4 │ 0,28956246 │ 0,29000 │
──┼────────────┼─────────┤
5 │ 0,30194801 │ 0,30200 │
──┼────────────┼─────────┤
6 │ 0,7747401 │ 0,77500 │
──┴────────────┴─────────┘
Zahlenformate der Zellen im gewählten Bereich:
A1:A6
haben das Zahlenformat: Standard
B1:B6
haben das Zahlenformat: 0,00000
Tabellendarstellung erreicht mit dem Code in FAQ:2363
Vielen Dank.
Gruß
Thomas