Ermitteln der Anzahl der Dezimalstellen beliebiger Zahlen (nicht nur Anführungszeichen) unter Umgehung von Digits() in MQL4 und MQL5 - Seite 2

 
fxsaber:

Ja, acht.

Warum dann?

void OnStart()
{
        double price = 500000000.0001;
        Print( price, ":", Digits_values( price ));
}

Ziffern_Werte gibt 4 ?

Ergebnis: 500000000.0001:4

 

Wie viele Nachkommastellen gibt es?

void OnStart()
{
        double price = 5000000000.0001;
        Print( price, ":", GetDigits( price ));
}

Offenbar so viele, dass der Computer sie nicht einmal zählen kann.

Ergebnis: ????

 
A100:

Warum dann

Ziffern_Werte gibt 4 ?

Ergebnis: 500000000.0001:4

Studieren Sie die String-Konvertierung.

 
A100:

Wie viele Nachkommastellen gibt es?

Offenbar so viele, dass der Computer sie nicht einmal zählen kann.

Ergebnis: ????

Ja, etwa 1/3.

 
A100:

Eine gute Lösung funktioniert in der Regel richtig

Ich habe vielleicht nicht alles überprüft, aber als ich es zweimal auf MQL4 getestet habe, waren die Ausgabewerte korrekt

 
fxsaber:

Studieren Sie den Wurf auf die Schnur.

Was hat das mit Umstellung zu tun? Es gibt eine Quellennummer 500000000.0001

Die Frage ist: Wie viele Dezimalstellen hat sie? Die Antwort ist 4, und du hast 8.

 
A100:

Es gibt eine Quellennummer 500000000.0001

Bei den Doppelgängern gibt es keine solche Zahl. Es gibt eine ungefähre Entsprechung - 500000000.00010001016593933105. Sie wird ihm zugewiesen.

 
A100:

Was hat das mit Umstellung zu tun? Es gibt eine Anfangsnummer 500000000.0001

Die Frage ist, wie viele Nachkommastellen sie hat? Die Antwort ist 4, und du hast 8.

Nicht "Sie haben 8", mql hat standardmäßig 8. Können wir die Dokumentation nicht lesen?

 
Alexandr Sokolov:

Ich denke, ich bin nicht der einzige, der eine seltene Situation, wo ich brauchte, um die Anzahl der Dezimalstellen zu erhalten, und Digits() Funktion funktioniert nur mit Anführungszeichen, und außerdem gibt es keine Informationen über sie irgendwo (zumindest zum Zeitpunkt des Schreibens dieses Beitrags habe ich nicht gefunden, bevor, so möchte ich zeigen, welche Lösung ich gefunden habe).


Wie sich herausstellte, das Wesen der banalen einfach, aber immer noch einen Nachteil hat - diese Funktion nicht erkennen Nullen, wenn nach ihnen gibt es keine anderen Ziffern. Zum Beispiel gibt die Funktion 2 zurück, wenn sie von 0,01 gefolgt wird, aber wenn sie von 0,0000 gefolgt wird, gibt sie 0 zurück (d.h. sie kann keine vier Nullen sehen). Berücksichtigen Sie also dieses Manko bei Ihren Entwicklungen.


Der Code in MQL4



Beunruhigt es Sie nicht ein wenig, dass der Parameter Wert blau eingefärbt ist?

 
Алексей Тарабанов:

Stört es Sie nicht im Geringsten, dass Sie den Parameter Wert in blauer Schrift haben?

Aus irgendeinem Grund ist es hier im Forum so, aber im Editor ist es das Gleiche wie sonst auch