Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wenn es sich um einen Vergleich handelt, können Sie leicht Ihre eigene Funktion erstellen :
Das ist nur ein Gedanke.
Wenn es sich um einen Vergleich handelt, können Sie leicht Ihre eigene Funktion erstellen:
Das ist nur ein Gedanke.
Das ist ein guter Gedanke, danke dafür :-)
Die Verwendung von "Point" oder "Point/2.0" ist IMO kein sehr guter Differenzwert. Der Rundungsfehler, der durch NormalizeDouble eingeführt wird (von dem ich mich heute verbrannt habe), ist sicherlich viel kleiner als 8 Stellen, eher 15 Stellen.
In Anbetracht der vorangegangenen Tipps habe ich einige Änderungen vorgenommen und die folgende Routine zusammengestellt, die gut zu funktionieren scheint (sogar mit dem "diff" auf 15 Dezimalstellen), obwohl sie noch nicht rigoros getestet worden ist:
Here is a check of the obvious:
Hier ist eine weitere mögliche Routine, die vergleichen kann, aber auch intern entweder A und/oder B normalisieren kann und auch die Vergleichsdifferenz (von A-B oder B-A) zu einer größeren Zahl auf der Grundlage von "Ziffern" entspannen wird. Ich bezweifle, dass diese Routine im Vergleich zu dem einfachen "AvsB" oben notwendig ist, aber sie wird für Ihre Verwendung angeboten, wie gewünscht:
Die Verwendung von "Point" oder "Point/2.0" ist IMO kein sehr guter Differenzwert. Der Rundungsfehler, der durch NormalizeDouble eingeführt wird (der mir heute zum Verhängnis wurde), ist sicherlich viel kleiner als 8 Ziffern, eher 15 Ziffern.
Sie wollen den größten Wert, der nicht als Rundungsfehler angesehen werden kann, oder gleichbedeutend den kleinsten Wert, der nicht als Preisänderung angesehen werden kann. Da sich Preise nur um ein Vielfaches von Punkten ändern können, ist Punkt/2 genau das.
Der doppelte Wert des Brokers könnte irgendwo zwischen 1,234575000000000000 und 1,23458499999999999 liegen und immer noch als derselbe Preis von 1,23458 angesehen werden.
Hätten Sie dies verwendet, hätten Sie das Problem nicht gehabt:
if (a > b)
if (a >= b)
if (a != b)
Sollten wir die Verwendung von normalisedouble vermeiden?
oder vielleicht.. ich habe eine Idee, dass wir dieMathRound-Funktion verwenden können
ex . double x= (MathRound( 1.37883 * 100000)) / 100000 ;
so können wir die Funktion
*Schüttelt seine Krawatte mit zwei Fingern in Position* Verwenden Sie normalize double nur in Berechnungen, die einen Double-Wert beinhalten, nicht einfach überall, wo es einen Double-Wert gibt.
Sollten wir die Verwendung von normalisedouble vermeiden?
oder vielleicht.. ich habe eine Idee, dass wir die MathRound-Funktion verwenden können
ex . double x= (MathRound( 1.37883 * 100000)) / 100000 ;
Man hat dann immer noch einen Double und die Möglichkeit, dass der Preis != Preis ist.
Ich bin zu dieser Lösung gekommen, die doubles in ints umwandelt, um doubles zu vergleichen . . .
so dass . . .
niemals wahr sein wird.