
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
Questo perché è 0,6, quindi 0,5 si ottiene solo barando.
Se 'v1' è inserito in qualsiasi numero, allora mostra che è arrotondato correttamente a 'i = 2'.
Se 'v1' viene inserito in un numero qualsiasi, allora si può vedere che fino a 'i = 2' tutto viene arrotondato correttamente.
Quando una sola cifra è normalizzata, è semplice: 0, 1, 2, 3, 4 -> 0, e 5, 6, 7, 8, 9 -> 1.
Quando si normalizzano due cifre, vengono presi in considerazione i numeri a due cifre: 0 - 49 -> 0, e 50 - 99 -> 1. Dopo tutto, se il numero 1,49 deve essere arrotondato a numeri interi, dobbiamo davvero ottenere 2, che è 51 centesimi contro i 49 centesimi disponibili per 1?
È lo stesso con le tre cifre, le quattro cifre, ecc.
Ma 1,45 è arrotondato a 2, ma solo se è stato precedentemente normalizzato a un grado di precisione superiore.
v1 = 0 = 1.0000000, v2 = 0 = 2.0000000
v1 = 1 = 1.5000000, v2 = 1 = 1.5000000
v1 = 2 = 1.4500000, v2 = 2 = 1.4600000
v1 = 3 = 1.4550000, v2 = 3 = 1.4550000
si scopre che se nei calcoli del numero è stato normalizzato ad una precisione superiore e nei calcoli successivi per normalizzare il numero ad una precisione inferiore si tradurrà in un diverso dal semplicemente normalizzato questo numero ad una precisione inferiore.
si scopre che se nel calcolo il numero è stato normalizzato con una precisione maggiore e nei calcoli successivi il numero viene normalizzato con una precisione minore, il risultato è diverso dalla semplice normalizzazione del numero con una precisione minore.
Mi scusi, ma come ottiene i valori che vuole?
Se uso le funzioni raccomandate, allora:
- In un caso ottengo un valore correttamente arrotondato
0.06-0.02 =NormalizeDouble(0.03999999999999999,2) = 0.04
La divisione è approssimata e la normalizzazione è necessaria.
- Nel secondo caso, ottengo anche l'arrotondamento, ma non è necessario in questo caso
0.06-0.024 = NormalizeDouble(0.036,2) = 0.04
La normalizzazione (arrotondamento) non è necessaria qui.
Ma come faccio a normalizzare invece di arrotondare?
Mi scusi, ma come ottiene i valori che vuole?
Per questo, vale solo la pena di formulare quali sono i "valori giusti" ))
Se uso le funzioni raccomandate, allora:
- In un caso ottengo un valore correttamente arrotondato
0.06-0.02 = NormalizeDouble(0.03999999999999999,2) = 0.04
La divisione è approssimativa e non si può fare a meno della normalizzazione.
- Nel secondo caso, ottengo anche l'arrotondamento, ma non è necessario in questo caso
0.06-0.024 = NormalizeDouble(0.036,2) = 0.04
La normalizzazione (arrotondamento) non è necessaria in questo caso.
Ma come faccio a normalizzare correttamente, invece di arrotondare i valori?
L'esempio sopra mostra che stai usando qualche algoritmo intuitivo che determina la "giustezza" della normalizzazione. Nel primo caso, è una frazione infinita, mentre nel secondo caso è una frazione finita. Aggiusta il tuo algoritmo per convertire il numero reale nella forma desiderata.
Anche se il modo più semplice - decidere in anticipo sulla precisione richiesta dei calcoli.
Per fare questo, vale semplicemente la pena di formulare quali sono i "valori giusti ))
Dall'esempio precedente, potete vedere che state usando un qualche algoritmo intuitivo, con il quale determinate la "necessità" della normalizzazione. Nel primo caso, è una frazione infinita, mentre nel secondo caso è una frazione finita. Aggiusta il tuo algoritmo per convertire il numero reale nella forma desiderata.
Anche se il modo più semplice è decidere in anticipo di quale precisione avete bisogno.
Se volete 0,036 (3 cifre decimali), normalizzate a 3, non a 2.
Mi sono sbagliato, fino a 3 cifre dovrebbero essere normalizzate. È possibile farlo?
Mi sono sbagliato, fino a 3 cifre dovrebbero essere normalizzate. Funzionerà così?
Ecco il tuo codice:
Invece di 2, metti 3 ed è 0,036.