Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho anche appena provato ad usarlo senza successo. È possibile che DTS cambi semplicemente la precisione di un valore per l'aspetto e non il valore effettivo? Non vedo altre opzioni.
Sì, penso che la stringa renda semplicemente il valore nel doppio una versione stampabile di esso, ma non lo cambia. Non sono sicuro di come farlo in MQL, ma so che in Java puoi forzare una conversione di tipo da un tipo a un altro (in questo caso, da doppio a int).
Dalla documentazione di oracle su http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html. Questa è solo una piccola parte del codice presentato.
Nel tuo caso, credo che dovresti fargli dire qualcosa come
Ovviamente dovresti aggiustare i nomi per adattarli meglio al tuo codice.
http://www.studytonight.com/java/type-casting-in-java lo copre anche lì. Dato che Java e MQL sono entrambi basati su C++, questo potrebbe aiutarvi.
@OP oltre a leggere tutti i link di MQL4 precedentemente postati vedi Working With Doubles e PrintFormat
@JD4 Non vedo come postare codice Java e fare riferimento alle specifiche Java aiuti l'OP. Anche Java e C++ sono simili, ma non sono d'accordo che sia basato su C++.
Anche se stai cercando di essere d'aiuto, penso che molte delle tue risposte quando non sei sicuro delle risposte stesse, portano solo a confondere le persone in cerca di aiuto.
@OP oltre a leggere tutti i link di MQL4 precedentemente postati vedi Working With Doubles e PrintFormat
@JD4 Non vedo come postare codice Java e fare riferimento alle specifiche Java aiuti l'OP. Anche Java e C++ sono simili, ma non sono d'accordo che sia basato su C++.
Anche se stai cercando di essere d'aiuto, penso che molte delle tue risposte quando non sei sicuro delle risposte stesse, portano solo a confondere le persone in cerca di aiuto.
Credo che tu abbia frainteso il mio post. Mql4 OO è certamente basato su C++. Non credo che ci sia da discutere su questo. Mi riferivo alla tua affermazione:
JD4: Since Java and MQL are both supposed to be based on C++, this might help you out.
seguito da molti riferimenti a Java. Ho detto -
ydrol: Anche Java e C++ sono simili, ma non sono d'accordo che sia basato su C++
Mi riferivo in particolare ai tuoi riferimenti a Java. Java non è basato su c++ secondo me.
In ogni caso l'argomento della rappresentazione dei decimali in virgola mobile è stato trattato più volte nei thread menzionati da WHRoeder prima.
Sembra che OP voglia arrotondare a due cifre decimali, ma senza postare alcun output o esempi specifici immagino che il grado di errore di arrotondamento che stanno vedendo possa essere ignorato.
Entrambi sbagliati. Si arrotonda al numero intero più vicino. Irrilevante. Restituisce un doppio. 1 = 1.0 = 1.00 = 1.00000 = 1.000000000000000000000000000000000000 INFINITE CIFRE
Impara la virgola mobile. L'operando ==. - MQL4 forum
Immagino che WH abbia bisogno di tornare indietro e rileggere, stavo dicendo ciò che la pagina diceva che la funzione faceva, non ciò che effettivamente fa. E la programmazione informatica è uno dei pochi posti dove (int) 1 != (double) 1.00000000 (all'infinito) per quanto riguarda i tipi di dati.
@ ydrol, ho perso la direzione del tuo intento con la tua affermazione su MQL/Java/C++. Un po' di materiale di riferimento per te per dare un'occhiata all'origine di Java come linguaggio di programmazione.
https://en.wikipedia.org/wiki/Java_(linguaggio_di_programmazione)
http://www.freejavaguide.com/history.html
Dato che entrambi dicono quasi la stessa cosa riguardo al C++, posterò dal wiki. "Il linguaggio deriva gran parte della sua sintassi da C e C++, ma ha meno strutture di basso livello di entrambi".
Dalla stessa epoca"La sintassi di un linguaggio definisce la sua forma superficiale ". (parentesi graffe ecc.). Ciò di cui si sta discutendo in questo thread non è legato alla sintassi. La mia opinione è che dire "Java è basato su C++" nello stesso modo in cui lo è MQL, è un'affermazione molto più forte che non condivido.
Ma siccome è un'affermazione qualitativa possiamo avere ragione e torto allo stesso tempo. Ancora non vedo come le specifiche Java aiutino l'OP, quando ci sono dei link specifici già dati con il problema e questa non era una domanda relativa alla sintassi.
Entrambi gli articoli che citi, sottolineano che Java prende in prestito dalla sintassi - ma poco altro. Questo non è un problema legato alla sintassi.
Tuttavia è legato alla rappresentazione in virgola mobileIEEE 754 usata da MQL, che è anche condivisa dalle lingue. (e molti altri che non hanno una sintassi simile al c - ad esempio Pascal, o anche applicazioni come Excel) e questo è davvero perché è uno standard supportato dalla maggior parte delle CPU/FPU piuttosto che somiglianze sintattiche dei linguaggi. Il problema è la rappresentazione in virgola mobile delle frazioni decimali ha piccoli errori. L'OP vuole arrotondare a due cifre decimali. Il formato IEEE754 non può memorizzare accuratamente un decimo (0,1) né un centesimo (0,01). Nel formato binarioIEEE 754 queste sono frazioni binarie ricorrenti, (allo stesso modo che 1/3 è una frazione decimale ricorrente 0.33333... ) - La differenza tra il numero previsto e il numero reale è abbastanza piccola (ad esempio 0.00000000000001 ) ma è abbastanza grande in modo che
1/10 != 0.1 // probabilmente
E int(0.1 * 10) potrebbe arrotondare nel modo sbagliato
Ma come OP non ha postato esattamente ciò che stanno vedendo il miglior consiglio è stato dato molto indietro nel 3 ° post di questo argomento, andare a leggere i thread MQL. Non vedo il senso di suggerire loro di leggere anche le specifiche Java dopo che i thread MQL sono stati dati e probabilmente non hanno familiarità con Java.
Riassunto del thread:
Quanto sopra era una risposta specifica al tuo post specifico"MathRound restituisce un doppio; numero infinito di posizioni decimali."
Ancora una volta, secondo la pagina della documentazione.
"Valore di ritorno
Valore arrotondato all'intero più vicino."
Ora, una risposta specifica a questa parte del tuo post.
"Quello che la pagina dice, è quello che fa. Arrotonda. Niente a che vedere con la questione dei decimali multipli."
Di nuovo, rileggi la citazione, dice che restituisce "Valore arrotondato fino al numero intero più vicino". Un numero intero, per definizione, è un numero intero, come in nessun decimale. E ancora, se questo non è in realtà ciò che fa, allora il codice o la descrizione è rotto, e l'uno o l'altro o entrambi devono essere corretti da MQ, o altrimenti un'etichetta di avviso che afferma che queste funzioni non funzionano come pubblicizzato.
Se effettivamente restituisce il tipo che gli viene dato, ma all'equivalente matematico del valore intero più vicino (come in restituisce 1.00000 da un 1.23456, e 1 == 1.00000) ma non restituisce un tipo intero effettivo, allora la pagina di riferimento deve specificare qualcosa come "non cambia il tipo di dati sottostante" o qualche altro modo che sia chiaramente indicato. Penso che questa sia stata una traduzione piatta dalla pagina originale russa, e come tale, non è chiara in inglese come dovrebbe essere.