Obter o número de casas decimais de quaisquer números (não apenas citações) contornando Dígitos() em MQL4 e MQL5 - página 11

 
multiplicator:
Estes flutuadores são um ***. Estes flutuadores não são nada além de problemas.

Quando eles farão os números normais para a programação?

Você pode fazer um número fracionário ser armazenado na memória como um número inteiro e uma parte fracionária.

bóia é mais fácil, tem menos precisão (dígitos após,) do que o dobro

estes números normais de programação? )))), aparentemente você quer decimal, mas, infelizmente, os desenvolvedores disseram explicitamente (pesquisar os posts do administrador Renat) que não haverá novos tipos

dobro a fração, aqui fezhttps://www.mql5.com/ru/forum/290279#comment_9396706

mas eu ainda preciso +, -, *, / para sobrecarregar os operadores, portanto não estou interessado.

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

bóia é mais fácil, tem menos precisão (dígitos após,) do que o dobro

estes números normais de programação? )))), aparentemente você quer decimal, mas, infelizmente, os desenvolvedores disseram explicitamente (pesquisar os posts do administrador Renat) que não haverá novos tipos

dobro a fração, aqui fezhttps://www.mql5.com/ru/forum/290279#comment_9396706

mas ainda há necessidade de operadores +, -, *, / para sobrecarregar, até agora não interessantes abandonados

Sim, DECIMAL.



Ou desenvolva seu próprio tipo. para que o número seja armazenado na memória como sua parte inteira e sua parte fracionária.
como dois inteiros.



2 147 483 647.2 147 483 647



e ocuparia tanta memória quanto dois inteiros. 8 bytes.

 
multiplicator:

Sim, DECIMAL.



Ou desenvolva seu próprio tipo para armazenar o número como sua parte inteira e sua parte fracionária.
como dois inteiros.



2 147 483 647.2 147 483 647



E ocuparia tanta memória quanto dois inteiros. 8 bytes.

já existe uma aritmética padrão de dupla dupla aritmética

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:

já existe uma aritmética padrão de dupla dupla aritmética

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

Pelo contrário, eu quero me afastar do duplo, e você sugere o duplo duplo.

As mesas armazenam o número na memória de uma forma imprecisa.
Eu lhe dei um vídeo.
 
multiplicator:
Eu, pelo contrário, quero me afastar dos problemas, e você está me oferecendo um problema.

dubles armazenam o número na memória de uma forma imprecisa.
Eu lhe dei um vídeo.

Bem, se a velocidade de cálculo e a compatibilidade não são importantes, então sim, você pode contar como quiser.
Mas assim que estes números precisarem ser usados em algum lugar - você terá que converter tudo de volta para um número impreciso.

 
Taras Slobodyanik:

Bem, se velocidade e compatibilidade não são importantes, então sim, você pode contar como quiser.
Mas assim que estes números precisarem ser usados em algum lugar, você terá que converter tudo de volta para um número duplo e impreciso.

Bem, em decimal, está tudo bem. Eles são de alguma forma divididos um pelo outro e armazenados de forma exata.

 
multiplicator:

Bem, em decimal está bem. de alguma forma eles são divididos um pelo outro e armazenados de forma exata.

bem, não em decimal, mas em frações

e em decimal você tem que aceitar as mesmas imprecisões-abreviações, porque é impossível (desnecessário) escrever números exatos infinitos

 
multiplicator:

Bem, em decimal está OK. de alguma forma eles estão divididos uns nos outros e armazenados exatamente como estão.

Eu me pergunto como você contará logaritmos, conversões de graus com números não-inteiros, uso de trigonometria, .... usar bibliotecas de terceiros, indicadores... Estão todos em erro!
 
Aliaksandr Hryshyn:
Como você contará logaritmos, poderes com números não-inteiros, usar trigonometria, .... usar bibliotecas de terceiros, indicadores... Todos eles são propensos a erros!
Você está acostumado a trabalhar com números decimais em vez de números binários.
e você está acostumado a onde está a margem de erro.
 

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

Esta é provavelmente a melhor solução, mas será 40% mais rápida (por alguma razão o mql abranda em loops)

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() работает тольк...
Razão: