Microsoft Excel

Herbers Excel/VBA-Archiv

Verständnisfrage: Single-Variable



Excel-Version: 9.0 (Office 2000)

Betrifft: Verständnisfrage: Single-Variable
von: Rainer
Geschrieben am: 11.06.2002 - 15:57:09

Hallo Forum!

Kann mir jemand sagen warum folgende Anweisungen nicht das gleiche Ergebnis bringen?


Dim strWert As String
Dim sngWert as Single

sngWert = 0.18
strWert = "0,18"

Cells(1, 1).Value = sngWert      'liefert 0,180000007152557
Cells(2, 1).Value = strWert * 1  'liefert mir den gew. Wert  0,18
Cells(3,1).value=0.18            'liefert 0,18 !!

Das scheint zwar im Augenblick nicht sehr viel zu sein, doch da ich den genauen Wert für Berechnungen benötige, wundert mich das schon.
V.a. benötige ich die Variable, da ich die selbe Berechnung für unterschiedliche Werte verwende.

Kann mir da jemand den Grund für dieses Verhalten sagen?

Danke und lieben Gruß
Rainer


  

Re: Verständnisfrage: Single-Variable
von: Hajo
Geschrieben am: 11.06.2002 - 15:59:28

Hallo Rainer

ich kann dir den Grund leider nicht schreiben. Um aber die Multiplikation zu verhindern Definiere die Variable als Double

Gruß Hajo


  

Re: Danke, aber ...
von: Rainer
Geschrieben am: 11.06.2002 - 16:15:03

Lieber Hajo!

Herzlichen Dank für deine rasche Antwort! Ich habe sofort alle betroffenen Variablen von Single (je 4 Bytes Speicherplatz) auf Double (je 8 Bytes)ausgebessert. Funktioniert bestens.

Aber...
ich hätte das schon gerne gewusst, da ich mich bemühe, jederzeit den Variablen die jeweils passenden Datentypen zu vergeben (um Speicher zu sparen, was ja bei kleineren Berechnungen heutzutage 'fast' nichts mehr ausmacht).

Lieben Gruß
Rainer


  

Re: Danke, aber ...
von: Alan Hathway
Geschrieben am: 11.06.2002 - 16:23:16

Erstens
Heutzutage klotzt man. Die (Arbeits-)Zeit die man in 'sparen' investiert lohnt sich nicht, im Vergleich zum Ersparnis bei den heutigen PC Preise.

Zweitens.
Sobald man etwas hinter der Komma hast bist Du ungenau. Beispiel:
Du verteilst ein Kuchen mit Gesamtgewicht von 1000 Gramm in 3 Stücke. Wie viel wiegt jedes Stück? Naa? Naa? Wenn du mit dem Dezimalsystem arbeitest, bist Du ungenau. So iss es

Alan Hathway

  

Re: Danke, aber ...
von: Hajo
Geschrieben am: 11.06.2002 - 16:25:22

Hallo Rainer

ich weiß vielleicht schon einiges von Excel, aber auf diese Frage kann ich keine Antwort geben. Ich hatte das Problem auch schon mal als ich mit Prozente gerechnet habe und es kam nicht 100% raus. Da wurde mir der Tip mit Double gegeben.

Leider keine Antwort!!

Gruß Hajo


  

Re: Binärzahlen!
von: Sigi E.
Geschrieben am: 11.06.2002 - 22:47:01

Hallo Rainer,

das sind die Grenzen der elektronischen Technik. Bekanntlich arbeiten Computer im Dualsystem. Für die Berechnung und Speicherung von Zahlen stehen zudem nur eine begrenzte Anzahl von Bits bzw. Bytes zur Verfügung.

Außerdem werden „unsere Dezimalzahlen“ in Binärzahlen umgewandelt. Bei Ganzzahlen (1, 2, 3, ...) ist das noch einfach. Doch bei Dezimalbrüchen (0,001, 0,000002, etc) wird dies zum Problem. Es gibt Dezimalwerte, die können im Binärsystem nicht mehr exakt dargestellt werden (Bsp.: 65 – 64,2 ergibt in Excel 0,799999999999997; Format entsprechend einstellen). Es gibt viele solcher Beispiele! Die Definition der Zahlen (Single od. Double) spielt dabei eine untergeordnete Rolle.

Vergleichbares gibt es auch im Dezimalsystem: Versuch mal 1/3 in Dezimalschreibweise exakt darzustellen! (Man kommt nur zu Näherungswerten: 0,333....)

Beim Weiterverarbeiten von berechneten Werten verwende ich deshalb häufig die Rundenfunktion und runde auf die geforderte Genauigkeit, um keine Überraschungen zu erleben!

Gruß
Sigi

  

Danke euch allen!
von: Rainer
Geschrieben am: 12.06.2002 - 10:53:49

Liben Gruß
Rainer