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
Dependiendo de tus objetivos, a veces merece la pena pasar a los números enteros por completo. Ahorra muchos nervios :-) Una vez tuve una tarea en la que tenía que marcar con precisión muchos niveles, al principio me costó el doble, y luego convertí todo a puntos enteros desde 0 y todo se volvió fácil, sencillo y sin errores.
No es necesario utilizar el redondeo a menos que la tarea lo requiera.
Esa es la cuestión: las tareas son diferentes :-)
Si utilizaMathFloor o MathCeil para el redondeo, debe normalizar el resultado original con la precisión correcta.
Porque durante el cálculo, en lugar de un número entero, puede obtener un número fraccionario, y debido a esta "cola" del número se redondea incorrectamente, el resultado es incorrecto.
Por ejemplo:
Print (DoubleToStr(1156.12/point, 15));
Print (NormalizeDouble(1156.12/point, _Digits));
ahora vamos a intentar redondear conMathFloor
Print (DoubleToStr(MathFloor(1156.12/point), 15));
Print (MathFloor(NormalizeDouble(1156.12/point, _Digits)));
Si normalizo el número a 1,05 - se normalizará a 1,1, que en principiono eslo que necesito usandoMathFloor :-)
Pues yo no utilizaríaMathFloor en absoluto.
Pero el problema es diferente.
Но задача то другая.
¿Por qué es diferente? Usted dijo que necesitaba redondear hacia abajo - MathFloor hace exactamente eso
¿Por qué es diferente? Dijiste que necesitabas redondear hacia abajo - eso es lo que hace MathFloor.
si!!! pero si hago una normalización redondeará las matemáticas hacia abajo yMathFloor no tendrá sentido
el ejemplo anterior con el número 1156.12, este número se almacena en la memoria como 1156.1199999999891
Es decir, si intentas redondear a la centésima, obtienes 1156,11 en lugar de 1156,12, que es la "peculiaridad" que te hizo devanarte los sesos.
el ejemplo anterior con el número 1156.12, este número se almacena en la memoria como 1156.1199999999891
Es decir, si intentas redondear a la centésima, obtendrás 1156,11 en lugar de 1156,12 - esta es la "peculiaridad" de tu problema.
Sí :-) Gracias.