Thema Datum  Von Nutzer Rating
Antwort
26.02.2009 19:09:05 halligalli
NotSolved
Blau Aw:falscher variablentyp beim hochzählen
27.02.2009 09:20:54 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
27.02.2009 09:20:54
Views:
1067
Rating: Antwort:
  Ja
Thema:
Aw:falscher variablentyp beim hochzählen
Hallo halligalli,
du verwendest keinen falschen Variablentyp. Das Problem liegt daran, dass kleine Zahlen, die im Dezimalsystem nur endlich viele von null verschiedene Nachkommastellen haben, im Dualsystem durchaus periodische, aber unendlich viele von null verschiedene Nachkommastellen haben können. Ähnlich wie die Addition im Dezimalsystem von z.B. 1/3 + 1/3 +1/3, also 0,3333... + 0,3333... + 0,3333... immer eine Zahl kleiner 1 ergibt, egal wie viele Stellen berücksichtigt werden, führt dies auch bei Verwendung des Binärsystems zu solchen Ungenauigkeiten,
Abhilfe kannst du schaffen, indem du stets mit einer etwas höheren Genauigkeit als deiner Schrittweite rundest:

a = 1-log(schritt) / log(10)
do while range("b10").value < grenze
[...]
range("b10").value = round(range("b10").value + schritt,a)
loop

Gruß
Holger


halligalli schrieb am 26.02.2009 19:09:05:

hallo leute, ich hab folgendes problem und zwar muss ich eine bestimmte zeile mit einem bestimmten (vom benutzer einzugebenden wert, gespeichert in variable schritt) hochzählen und das ganze mit einer schleife so lange ausführen, bis dieser wert der zeile, einen gewissen betrag überschreitet.
der code lautet:

do while range("b10").value < grenze
[...]
range("b10").value = range("b10").value + schritt
loop

das ganze funktioniert auch soweit, aber wenn der wert aus schritt sehr klein ist (und auch nur dann), wird die schleife einmal zu viel ausgeführt, weil die werte nicht richtig addiert werden. wenn der schritt zb 0,001 ist und so oft addiert wird bis ein schritt vor abbruch, dann steht in der zeile zb 3.99999 (aber halt nicht 4) und genau deswegen wird die schleife noch einmal ausgeführt, sollte aber eigenltich abgebrochen werden, wie kann ich dies verhindern?

ich hoffe ihr versteht was ich meine :)

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
26.02.2009 19:09:05 halligalli
NotSolved
Blau Aw:falscher variablentyp beim hochzählen
27.02.2009 09:20:54 Holger
NotSolved