Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Lo que me molesta es que cuando calculo un número fraccionario, lo normalizo, lo escribo en una variable y luego lo leo y lo normalizo de nuevo, me salen colas
Por ejemplo
basis[0]=NormalizeDouble(sum_A,2);
GlobalVariableSet("Equity-"+portfolio_id,basis[0]);
...
current=NormalizeDouble(GlobalVariableGet("Equity-"+portfolio_id),2);
text = "Positions synchronized at " + current + " for portfolio: " + portfolio_name;
if(!automatic) MessageBox(text,""); else Print(text);
Ahora lo he cambiado por
text = "Positions synchronized at " + DoubleToStr(current,2) + " for portfolio: " + portfolio_name;
if(!automatic) MessageBox(text,""); else Print(text);
y parece que no hay colas, whew, whew, whew...
Ya he escrito, lo repetiré: algunos números no existen en binario. No hay 0,1, ni 0,3 y muchos otros. No importa cuántas veces escribas double val = NormalizeDouble(0.1434, 1), nunca obtendrás 0.1 porque no existe tal número.
Por ejemplo, los números se representan de la siguiente manera:
0,1 = 0,10000000000000001
0,2 = 0,2000000000001
0,3 = 0,2999999999999999999
0,4 = 0,4000000000000000002
0,6 = 0,59999999999999998
pero
0,125 = 0,125
0,25 = 0,25
0,5 = 0,5
Si esto es muy molesto, tienes que redondear o escribir tu propia bicicleta para representar números fraccionarios (puede haber algunas bibliotecas, no he mirado en ello) que no utilizarán fpu.
Y no se añaden colas durante la conversión a cadena, están ahí inicialmente.
así que he resuelto mi pregunta, podemos cerrar el tema
solución: hay que forzar el redondeo, incluso después de la normalización
muy posiblemente... pero en cuanto al resultado final, ¡hay cola!
...
No hay colas después de la normalización.
Creo que estás engañando al hombre. ¿Qué quiere decir que no hay colas después de la normalización? No puede haber colas sólo en la cadena que obtuvimos de un número y redondeamos el valor (redondeado ya en la cadena, no en el doble). Pero hay colas después de NormalizeDouble().
Solución equivocada. Al redondear, hay que multiplicar, redondear y dividir. Después de la última división, el número no estará normalizado.
¿Qué quiere decir con normalización? Stringo decía aquí que el algoritmo es algo así:
Creo que estás engañando al hombre. ¿Qué quiere decir que no hay colas después de la normalización? No puede haber colas sólo en la cadena que obtuvimos de un número y redondeamos el valor (redondeado ya en la cadena, no en el doble). Pero después de NormalizeDouble() hay colas.
¿Qué quiere decir con normalización? Stringo decía aquí que el algoritmo es algo así:
Te hago una pregunta concreta y me echas agua. ¿Cómo es normal explicar y argumentar tu punto de vista?
¿Leer los libros de texto y la documentación en voz alta o qué? ¿O leer el diccionario en voz alta, sobre la palabra "aproximadamente"?