Ich habe Probleme beim Vergleich von 2 Doppel in Excel VBA
Angenommen, ich habe den folgenden Code
%Vor%Nach einigen Manipulationen an b ist b jetzt gleich 0,6
aber die Ungenauigkeit in Bezug auf den doppelten Datentyp gibt mir Kopfschmerzen, weil
%Vor%Weißt du, wie ich die nachlaufende Ungenauigkeit am Doppeltyp entfernen kann?
Sie können Fließkommawerte für Gleichheit nicht vergleichen. Siehe diesen Artikel auf " Vergleichen von Gleitkommazahlen " für eine Diskussion darüber, wie der intrinsische Fehler behandelt wird.
Es ist nicht so einfach, wie mit einer konstanten Fehlerspanne zu vergleichen, wenn Sie nicht genau wissen, wie hoch der absolute Bereich der Floats vorher ist.
Es ist nie klug, Doppelgänger auf Gleichheit zu vergleichen.
Einige Dezimalwerte werden mehreren Gleitkommadarstellungen zugeordnet. Also ist 0.6 nicht immer gleich 0.6.
Wenn wir eins voneinander subtrahieren, erhalten wir wahrscheinlich etwas wie 0,00000000051.
Wir können nun definieren, dass Gleichheit einen Unterschied kleiner als eine bestimmte Fehlergrenze hat.
wenn Sie das tun werden ....
%Vor%Sie müssen die runde Funktion in Ihrer IF-Anweisung wie folgt hinzufügen ...
%Vor%Siehe auch hier für zusätzliche Microsoft-Referenz .
Wie bereits erwähnt, können viele Dezimalzahlen nicht genau als traditionelle Gleitkommatypen dargestellt werden. Abhängig von der Art Ihres Problembereichs ist es besser, den Dezimal-VBA-Typ zu verwenden, der Dezimalzahlen (Basis 10) mit perfekter Genauigkeit bis zu einem bestimmten Dezimalpunkt darstellen kann. Dies wird oft zum Beispiel für die Darstellung von Geld gemacht, wo oft 2-stellige Dezimalgenauigkeit gewünscht wird.
%Vor%Hier ist eine einfache Funktion, die ich schrieb:
%Vor%Rufen Sie es mit:
auf %Vor%Tags und Links vba excel comparison double