È possibile ottenere un valore "esatto"? - pagina 6

 
abolk:

Per risolvere questo problema, 0,09*5 deve essere =0,45, non =0,4499999999999999999

e se non esiste, il problema è irrisolvibile.

0.09*5=0.45 )

non sai contare?)

 
sanyooooook:

0.09*5=0.45 )

Non sai contare, vero?).

Esatto, è stato dato l'esempio che conta 0,44 invece di 0,45 a causa del "suo" lavoro in MQL. Non ho familiarità con il linguaggio, ma è strano, perché un numero grande viene tagliato, voglio dire perché, quando supera il limite, viene arrotondato ma non tagliato. Sarebbe bello se il metodo di "taglio esatto delle stringhe", magari quello che ho citato sopra, fosse in MQL per l'uso. :)
 
WePlexus:
Esatto, è stato dato l'esempio che conta 0,44 invece di 0,45 a causa del "suo" lavoro in MQL. Non conosco a fondo il linguaggio, ma è strano perché un numero grande viene tagliato, voglio dire, perché quando il numero supera il limite, viene arrotondato invece di essere tagliato. Sarebbe bello se il metodo di "rifilatura esatta delle stringhe", magari quello che ho citato sopra, fosse in MQL per l'uso. :)
perché è comune in matematica che se si vuole rimuovere il numero di cifre decimali, allora il valore viene arrotondato.
 
sanyooooook:
perché è comune in matematica che se il numero di cifre decimali deve essere rimosso, il valore viene arrotondato.
miudro
 
Grazie per il vostro aiuto.
 
sempre
 
WePlexus:
Non conosco a fondo il linguaggio, ma è strano perché un numero grande viene tagliato, voglio dire, perché quando il numero supera il limite, viene arrotondato invece di essere tagliato. Sarebbe bello se il metodo di "taglio esatto delle stringhe", forse quello che ho citato sopra, fosse in MQL per l'uso. :)
È così che ho capito come il "taglio esatto" possa essere utile. Beh, a parte un senso di soddisfazione e di legittimo orgoglio per un problema risolto :).
 
Arrotondare è più facile
 
abolk:

questo è il numero massimo a cui avviene la normalizzazione:

Se si prende un altro 9, si normalizza a 0,02.

Ma la mia funzione fa il suo lavoro:

Normalize ("0.01999999999999999999999999999999", 6)

Esce 0,019999. Poi si può convertire il numero nel tipo giusto e fare matematica con esso.

Se si passa un numero nella funzione senza virgolette, il risultato sarà 0,02.

 
WePlexus:

Ci sono diversi modi per risolvere il tuo problema - ognuno di essi ha i suoi vantaggi e svantaggi - in termini di precisione e velocità di ottenere il risultato.

Lavorare con i numeri fluttuanti ha le sue peculiarità - devi capirle - e per capire queste peculiarità + per il tuo problema - devi cercare una soluzione.