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
3. `string FormatMoney(double amount)` formatiert einen Double-Wert `amount` als String, der einen Währungsbetrag darstellt. Es formatiert den Betrag mit zwei Dezimalstellen, ersetzt den Dezimalpunkt durch ein Komma und fügt alle drei Stellen Leerzeichen ein, um die Lesbarkeit zu verbessern. Außerdem wird am Ende das Währungssymbol aus `AccountInfoString(ACCOUNT_CURRENCY)` angefügt.
Vielen Dank dafür. Allerdings sind diese Funktionen bereits in der Bibliothek implementiert (sogar mit stabileren Ergebnissen als die Ihren), aber mit anderen Namen.
Hallo @amrali, danke für deinen Beitrag.
Vielleicht ist das ein Fehler?
Ich hatte erwartet, dass der zweite Druck "0.0001" sein sollte.
Wenn es ein Fehler ist, wie kann man ihn beheben? Wenn nicht, was ist in meinem Code falsch?
Ich danke Ihnen.
Hallo @amrali, vielen Dank für Ihren Beitrag.
Vielleicht ist dies ein Fehler?
Ich hatte erwartet, dass der zweite Druck "0.0001" sein sollte.
Wenn es ein Fehler ist, wie kann man ihn beheben? Wenn nicht, was ist in meinem Code falsch?
Vielen Dank!
Drucken Sie die hexadezimalen Darstellungen aus und Sie werden verstehen, dass die Spanne weit vom wahren realen Wert 0,0001 entfernt ist (das liegt an Rundungsfehlern bei der Subtraktion).
Sie müssen also Rundungsprozeduren anwenden.
Es gibt kleine Unterschiede, die Sie beachten sollten:
StripError() rundet an der 16 . Stelle 0.00009999999999998899 (0's werden nicht gezählt).
Round(x, 16) rundet auf die 16. Stelle nach dem Komma 0.00009999999999998899
Fließkommazahlen haben eine unendliche Anzahl von Dezimalstellen. Es liegt an dir, dass du das Fließkommaformat nicht verstehst und dass einige Zahlen nicht exakt dargestellt werden können. (wie 1/10.)
Doppeltes Gleitkommaformat - Wikipedia
Siehe auch Der == Operand. - MQL4 Programmierforum (2013)
Wenn Sie die korrekte Anzahl von Ziffern sehen wollen, konvertieren Sie sie in eine Zeichenkette mit der richtigen/gewünschten Genauigkeit.
Frage zu decima von marketinfo() - MQL4 Programmierforum (2016)
Die Fließkommadarstellung hat eine unendliche Anzahl von Dezimalstellen. Es liegt an Ihnen, dass Sie das Fließkomma-Format nicht verstehen und dass einige Zahlen nicht exakt dargestellt werden können. (wie 1/10.)
Doppeltes Gleitkommaformat - Wikipedia
Siehe auch Der == Operand. - MQL4-Programmierforum (2013)
Wenn Sie die korrekte Anzahl von Ziffern sehen wollen, konvertieren Sie sie in eine Zeichenkette mit der richtigen/gewünschten Genauigkeit.
question about decima of marketinfo() - MQL4 programming forum (2016)
Wie kann man am besten nur signifikante Ziffern mit Doppelzahlen drucken?
Diese Funktion funktioniert gut für 99,9% der Zahlen, aber sie hat Probleme mit runden Zahlen wie 1.0000000000
Mein Problem ist, dass ich die nicht signifikanten Ziffern entfernen muss, und aus irgendeinem Grund bin ich nicht in der Lage, dies nur mit @Trunc zu tun,
also habe ich etwas verwendet wie:
Es funktioniert genau wie benötigt und gibt mir die kleinste mögliche Zeichenkette für alle Zahlen, aber ich frage mich, ob es optimiert werden kann und immer noch die kleinste Zeichenkette mit runden Zahlen wie 1.00000000
Ich danke Ihnen für Ihre Hilfe.
Ich habe gerade festgestellt, dass ich die
Eine leicht modifizierte Version Ihrer
und dies ist der Code
Mein Problem ist, dass ich nicht signifikante Ziffern entfernen muss, und aus irgendeinem Grund bin ich nicht in der Lage, es nur mit @Trunc zu tun,
also benutze ich etwas wie:
Es funktioniert genau wie benötigt und gibt mir die kleinste mögliche Zeichenfolge für alle Zahlen, aber ich frage mich, ob es optimiert werden kann und immer noch kleinste Zeichenfolge mit runden Zahlen wie 1.00000000
Danke für die Hilfe!
Entschuldigung, Sie müssen verstehen, was signifikante Ziffern sind, da ich finde, dass Ihr Code die grundlegenden Konzepte verwirrt.
Vielen Dank für Ihre Zeit, und ja, ich bin mir nicht ganz sicher, ob ich "signifikante Ziffern" verstehe.
Im Grunde genommen muss ich die kürzestmögliche Zahl "drucken". Zum Beispiel:
1.0000000 -> 1
1.0090000 -> 1.009
123.00100 -> 123.001
Für mich bedeutet 'signifikante Ziffern': Ziffern, die den Wert einer Zahl ändern, wenn sie entfernt werden, also sind nachgestellte Nullen nicht signifikant.
Übrigens, seit dem letzten Windows-Update führt die Funktion Round(double, int) dazu, dass MT4 blockiert. Der erste Code, den ich gepostet habe, funktionierte perfekt und seit gestern Abend friert der MT4-Client komplett ein.
Vielen Dank für Ihre Zeit, und ja, ich bin mir nicht ganz sicher, ob ich "signifikante Ziffern" verstehe.
Ich muss im Grunde die kürzestmögliche Zahl "drucken". Zum Beispiel:
1.0000000 -> 1
1.0090000 -> 1.009
123.00100 -> 123.001
Für mich bedeutet "signifikante Ziffern": Ziffern, die den Wert einer Zahl verändern, wenn sie entfernt werden, also sind nachgestellte Nullen nicht signifikant.
Übrigens, seit dem letzten Windows-Update führt die Funktion Round(double, int) dazu, dass MT4 blockiert. Der erste Code, den ich gepostet habe, funktionierte perfekt und seit gestern Abend friert der MT4-Client komplett ein.