Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5 - página 11

 
multiplicator:
El flotador es un ***. Estos flotadores no son más que problemas.

¿Cuándo harán números normales para la programación?

Puede hacer que un número fraccionario se almacene en la memoria como un entero y una parte fraccionaria.

float es más fácil, tiene menos precisión (dígitos después de,) que double

¿son estos números normales para la programación? )))), aparentemente quieres el decimal, pero por desgracia, los desarrolladores han dicho explícitamente (busca en los posts del administrador Renat) que no habrá nuevos tipos

doble a fracción, aquí hizohttps://www.mql5.com/ru/forum/290279#comment_9396706

pero sigo necesitando +, -, *, / para sobrecargar los operadores, así que no me interesa.

Число в дробь (convert double to fraction)
Число в дробь (convert double to fraction)
  • 2018.11.16
  • www.mql5.com
Ищу способ преобразовать вещественное число в дробь, нагуглил исходник https://stackoverflow...
 
Igor Makanu:

float es más fácil, tiene menos precisión (dígitos después de,) que double

¿son estos números normales para la programación? )))), aparentemente quieres el decimal, pero por desgracia, los desarrolladores han dicho explícitamente (busca en los posts del administrador Renat) que no habrá nuevos tipos

doble a fracción, aquí hizohttps://www.mql5.com/ru/forum/290279#comment_9396706

pero todavía se necesitan los operadores +, -, *, / para sobrecargar, hasta ahora no es interesante abandonado

Sí, DECIMAL.



O desarrolle su propio tipo. para que el número se almacene en memoria como su parte entera y su parte fraccionaria.
como dos enteros.



2 147 483 647.2 147 483 647



y ocuparía tanta memoria como dos enteros. 8 bytes.

 
multiplicator:

Sí, DECIMAL.



O desarrolle su propio tipo para almacenar el número como su parte entera y su parte fraccionaria.
como dos enteros.



2 147 483 647.2 147 483 647



Y ocuparía tanta memoria como dos enteros. 8 bytes.

ya existe una aritmética estándar doble-doble

https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format

Quadruple-precision floating-point format - Wikipedia
Quadruple-precision floating-point format - Wikipedia
  • en.wikipedia.org
This 128-bit quadruple precision is designed not only for applications requiring results in higher than double precision,[1] but also, as a primary function, to allow the computation of double precision results more reliably and accurately by minimising overflow and round-off errors in intermediate calculations and scratch variables. William...
 
Taras Slobodyanik:

ya existe una aritmética estándar doble-doble

https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format

Por el contrario, yo quiero alejarme del doble-doble, y tú sugieres el doble-doble.

Las tablas almacenan un número en la memoria de forma imprecisa.
Te he dado un vídeo.
 
multiplicator:
Yo, por el contrario, quiero alejarme de los dubles, y tú me ofreces un duble-duble.

dubles almacenan el número en la memoria de forma inexacta.
Te he dado un vídeo.

Bueno, si la velocidad de cálculo y la compatibilidad no son importantes, entonces sí puedes contar como quieras.
Pero en cuanto estos números deban utilizarse en algún sitio, habrá que volver a convertir todo en dable, en un número inexacto.

 
Taras Slobodyanik:

Bueno, si la velocidad y la compatibilidad no son importantes, entonces sí, puedes contar como quieras.
Pero en cuanto estos números se tienen que utilizar en algún sitio, hay que volver a convertir todo en un número doble e inexacto.

Bueno, en decimal, no pasa nada. De alguna manera se dividen entre sí y se almacenan en forma exacta.

 
multiplicator:

Bueno, en decimal está bien. de alguna manera se dividen entre sí y se almacenan en forma exacta.

bueno, no en decimales, sino en fracciones

y en decimal hay que aceptar la misma inexactitud-abreviaturas, porque es imposible (innecesario) escribir infinitos números exactos

 
multiplicator:

Bueno, en decimal está bien. de alguna manera se dividen entre sí y se almacenan exactamente como son.

Me pregunto cómo contarán los logaritmos, las conversiones de grados con números no enteros, el uso de la trigonometría, .... utilizar bibliotecas de terceros, indicadores... ¡Están todos equivocados!
 
Aliaksandr Hryshyn:
Me pregunto cómo contarás logaritmos, potencias con números no enteros, usarás la trigonometría, .... utilizar bibliotecas de terceros, indicadores... Todos son propensos a los errores.
Estás acostumbrado a trabajar con números decimales y no con números binarios.
y estás acostumbrado a saber dónde está el margen de error.
 

https://www.mql5.com/ru/forum/287618/page3#comment_9240442

Esta es probablemente la mejor solución, pero será un 40% más rápido (por alguna razón mql se ralentiza en los bucles)

int d2(double x){
  if(x==NormalizeDouble(x,6))
   {
    if(x==NormalizeDouble(x,5))
     {    
      if(x==NormalizeDouble(x,4))
       {
        if(x==NormalizeDouble(x,3))
         {
          if(x==NormalizeDouble(x,2))
           {
            if(x==NormalizeDouble(x,1))
             {
              if(x==NormalizeDouble(x,0))
               {
                return 0;
               }
              return 1;
             }
            return 2;
           }
          return 3;
         }
        return 4;
       }
      return 5;
     }
    return 6;
   }
  return 7;
}
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
  • 2018.11.03
  • www.mql5.com
Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает тольк...