Round()
- Round() von Katja vom 14.09.2004 15:13:13
Betrifft: Round()
von: Katja
Geschrieben am: 14.09.2004 15:13:13
Hallo Leute
Ich habe folgendes Problem. Ich möchte eine Zahl runden:
Dim Dezimal as Single
Dezimal = 18.665
Dezimal = Round(Dezimal, 1)
Range("A2").Value = Dezimal
Nun wird aber in die Zelle A2 der Wert 18.70000076 geschrieben. Wieso? Muss ich noch etwas mit der Zellenformatierung machen? Ist im Moment General.
Danke für eure Hilfe und Grüsse
Katja
Betrifft: AW: Round()
von: Sven
Geschrieben am: 14.09.2004 15:34:01
[a2] = Round(Dezimal,1)
Sven
Betrifft: AW: Round()
von: EtoPHG
Geschrieben am: 14.09.2004 15:42:57
Katja,
Definiere Dezimal als DOUBLE NICHT als Single als
Dîm Dezimal as Double
und es funktioniert.
Gruss Hansueli
Betrifft: AW: Round()
von: Katja
Geschrieben am: 14.09.2004 16:14:13
Vielen Dank, es funktioniert! wieso gehts den mit double und mit single nicht?
Gruss Katja
Betrifft: AW: Round()
von: EtoPHG
Geschrieben am: 14.09.2004 17:09:44
Katja
Die Ungenauigkeit der internen abgespeicherten Werte kommt bei einem Single (4Byte) schon nach wenigen Kommastellen zum tragen, wie bei einem Double (8Byte).
Allerdings befriedigt mich das auch nicht so ganz, aber Tatsache ist, dass, wenn Du einen Wert wie 1.34545 als Single per VBA in eine Zelle abfüllst, ist der Zellwert =
1.34545004367828 bei Double hingegegen genau 1.34545. Ich nehme an, das ergibt sich auch aus der Tatsache, dass Excel alle Zellenwerte intern mit Double-precision rechnet.
Gruss Hansueli
Betrifft: AW: Round()
von: Katja
Geschrieben am: 15.09.2004 13:55:16
Ok, danke Hansueli für die Erklärung!
Gruss Katja