Microsoft Excel

Herbers Excel/VBA-Archiv

Round()

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