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
Ist die Uhrzeit imDatenfenster dieselbe?
Ja.
Ja.
Verstehe, es ist also wirklich Zeit für die Bar. Ich hatte nur einen Verdacht bezüglich des Parameters"Präzise Zeitleiste".
Hallo!
Wie verwendet man "double" in der "for"-Schleife richtig? Es scheint kein Verbot zu geben, in der Hilfe "double" zu verwenden. Ich verstehe, dass ich das "i" normalisieren muss, aber das funktioniert bei mir nicht.
Wenn "expr2=2.6" für 9 Iterationen noch in Ordnung ist, aber wenn "expr2=2.8" bereits 9 falsche Iterationen anzeigt (der richtige Wert ist 10).
Hallo!
Wie kann man "double" in der "for"-Schleife richtig verwenden? Es scheint kein Verbot zu geben, in der Hilfe "double" zu verwenden. Ich verstehe, dass ich das "i" normalisieren muss, aber das funktioniert bei mir nicht.
Wenn "expr2=2.6" ist noch in Ordnung für 9 Iterationen, aber wenn "expr2=2.8" zeigt bereits falsch 9 Iterationen (der richtige Wert ist 10).
Wahrscheinlich muss ich die Werte normalisieren.
Wahrscheinlich müssen die Werte normalisiert werden.
Wenn Sie das so gemeint haben, hat es auch nicht geholfen:
Wenn Sie das so gemeint haben, hat es auch nicht geholfen:
Nein. Zumindest müssen Sie es optimieren.
denn dadurch erhalten Sie den falschen Wert. Und die anderen müssen das vielleicht nicht.
Hallo!
Wie verwendet man "double" in der "for"-Schleife richtig? Es scheint kein Verbot zu geben, in der Hilfe "double" zu verwenden. Ich verstehe, dass ich das "i" normalisieren muss, aber das funktioniert bei mir nicht.
Wenn "expr2=2.6", dann ist alles normal 9 Iterationen, aber wenn "expr2=2.8" zeigt nicht korrekt 9 Iterationen (richtig 10).
Hier finden Sie, lesen Sie Nikolay's Post, sehr detaillierte und sehr qualitative Beschreibung der doppeltenhttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Wenn Sie den Stoff nicht gleich beim ersten Mal verinnerlichen können, versuchen Sie, Print() durch printf() in Ihrem Code zu ersetzen, wobei Sie double mindestens bis zur 15-ten Stelle ausgebenhttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Vielleicht verstehen Sie dann, warum das so ist
Nein. Zumindest müssen Sie dies optimieren
denn dadurch erhalten Sie den falschen Wert. Und die anderen müssen das vielleicht nicht.
Danke, aber auch Ihr Beispiel hat uns nicht das richtige Ergebnis geliefert. In printf kann man sehen, dass keine Normalisierung stattfindet:
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.0000000000000000000000000000000000000000000000000000000000000000000000000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.1999999999999999995559107901499373838305473327636718750000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.399999999999991111182158029987476766109466552734375000000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.5999999999999999999866773237044981212151491164199829101562500000000
0 10:29:31595 Test_Double_For EURCHF,H4: i = 1.7999999999999999982236431605997495353221893310546875000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.9999999999999997779553950749686919152736638618359375000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.1999999999999997335464740899624302983283996582031250000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.39999999999999999999119182158029987476766109466552734375000000000
0 10:29:31595 Test_Double_For EURCHF,H4: i = 2.6000000000000088817841970012523233890533447265625000000000
0 10:29:31595 Test_Double_For EURCHF,H4: MaxPass: 10 count: 9
0 10:29:31.595 Test_Double_For EURCHF,H4: Letzter i = 2.8000000000000002664535259100375697016716003417968750000000
hier finden Sie Nikolays Beitrag, in dem er die Arbeit mit Double sehr detailliert und qualitativ hochwertig beschreibthttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Wenn Sie den Stoff nicht gleich beim ersten Mal verdauen können, versuchen Sie, Print() durch printf() mit der Ausgabe von double mindestens bis zur 15-ten Stelle zu ersetzenhttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Vielleicht wird Ihnen dann klar, warum das so ist.
Danke, ich verstehe, warum das passiert, deshalb habe ich versucht, es zu normalisieren. Bei mir hat es nicht funktioniert. Die Option von Alexey Viktorov hat das Problem auch nicht behoben, die Werte bleiben nicht normalisiert. Es bleibt also die Frage, ob "double" in einer Schleife verwendet werden kann und immer die richtige Anzahl von Iterationen erhält.
Es bleibt also die Frage, ob "double" in der Schleife verwendet werden kann
kann
und immer die richtige Anzahl von Iterationen erhalten?
der Wert von double ist immer korrekt, aber er entspricht nicht dem Positionsdezimalsystem, das Sie gerne sehen oder bekommen würden
Danke, ich verstehe, warum das passiert, deshalb habe ich versucht, es zu normalisieren. Bei mir hat es nicht funktioniert. Die Option von Alexey Viktorov hat das Problem auch nicht behoben, die Werte bleiben nicht normalisiert
Jede Manipulation mit der doppelten Konvertierung wird immer Grenzen haben, ich bezweifle, dass dieses Problem so gelöst werden kann wie in Ihren Beispielen
Machen Sie eine zuverlässige Lösung: Verwenden Sie int in der Schleife und die Formel, um den Ergebniswert von double zu berechnen und verwenden Sie nicht die Addition von double als Ergebnis, wenn Sie in der Schleife iterieren - sehen Sie sich noch einmal mein Beispiel im Dialog mit Nikolaev an