|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Mit double immer +1 vom string lässt sich soweit gut arbeiten aber eine Sache ist noch ein großes Problem, die double Werte werden auf die 4. Nachkommastelle gerundet. Also ein string Wert von 5,555555 wird zu einem double Wert von 5,5556
Ich würd mich riesig freuen wenn jmd dazu noch eine Lösung einfällt. LG C$D |
|
|||
Sorry, es muß in der beiden!! []-Klammer die Anzahl der Elemente, wie in dem String auch enthalten sind, stehen, also in Deinem Beispiel sind es natürlich 5 Elemente!
Code:
double irgendwas[5]; string wert[5]; int cnt = 0; string str; wert[0] = ""; string variable = 111+","+222+","+333+","+444+","+555; for (int i = 0; i < StringLen(variable); i++) { str = StringSubstr(variable, i, 1); if (str == ",") { cnt++; wert[cnt] = ""; continue; } wert[cnt] = wert[cnt] + str; irgendwas[cnt] = StrToDouble(wert[cnt]); } Dann mußt Du bei der Alertausgabe die double-Zahl wieder in einen String umwandeln, weil die Alertausgabe nach der 4. Stelle rundet, also: Alert(DoubleToStr(zahl, 6)); Die 6 ist die Anzahl der Nachkommastellen. traderdoc |
|
|||
Wieso Alertausgabe ich möchte eigentlich nur die Werte des gegebenen strings als vollständige double´s weiternutzen. Grundlage ist das ich von extern ein string in den EA bekomme der Werte enthält. Da ich diese Werte im EA nutzen will müssen sie den selben Typ bekommen sonst gibts "different types in comparison" deshalb soll es zu double Werten werden. Das funktioniert, aber wie gesagt, es wird auf die 4. Nachkommastelle gerundet. Hab mal ein Comment eingefügt dann sieht man das mit dem Verlust der Nachkommastellen nach der 4. Stelle siehe Screenshot
Code:
string variable = 1.11111111+","+2.22222222+","+3.33333333+","+4.44444444+","+5.55555555; double irgendwas[5]; string wert[5]; int cnt = 0; string str; wert[0] = ""; for (int i = 0; i < StringLen(variable); i++) { str = StringSubstr(variable, i, 1); if (str == ",") { cnt++; wert[cnt] = ""; continue; } wert[cnt] = wert[cnt] + str; irgendwas[cnt] = StrToDouble(wert[cnt]); Comment("String = ",variable," double-wert 1 = ",irgendwas[0], " wert 2 = ",irgendwas[1], " wert 3 = ",irgendwas[2], " wert 4 = ",irgendwas[3], " wert 5 = ",irgendwas[4]); |
|
|||
Egal ob Alert oder Comment, der rundet immer nach der 4.Stelle, rechnet aber intern mit allen Kommastellen, die double so hergibt.
Kannst Du doch so kontrollieren, wie ich geschrieben hatte mit DoubleToStr(Zahl, nachkommastellen); Damit kannst Du auch im Comment alle Nachkommastellen anzeigen lassen. traderdoc |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, string, string auslesen |
|
|