Ottenere il numero di posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5 - pagina 11

 
multiplicator:
Il galleggiante è un tale ***. Questi galleggianti non sono altro che guai.

Quando faranno dei numeri normali per la programmazione?

Potete fare in modo che un numero frazionario sia memorizzato come un intero e una parte frazionaria.

float è più facile, ha meno precisione (cifre dopo,) di double

sono questi numeri normali per la programmazione? )))), apparentemente vuoi il decimale, ma ahimè, gli sviluppatori hanno detto esplicitamente (cerca i post di admin Renat) che non ci saranno nuovi tipi

doppio a frazione, qui ha fattohttps://www.mql5.com/ru/forum/290279#comment_9396706

ma ho ancora bisogno di +, -, *, / per sovraccaricare gli operatori, quindi non sono interessato.

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

float è più facile, ha meno precisione (cifre dopo,) di double

Sono numeri normali per la programmazione? )))), apparentemente vuoi il decimale, ma ahimè, gli sviluppatori hanno detto esplicitamente (cerca i post di admin Renat) che non ci saranno nuovi tipi

doppio in frazione, qui ha fattohttps://www.mql5.com/ru/forum/290279#comment_9396706

ma c'è ancora bisogno degli operatori +, -, *, / per sovraccaricare, finora non interessanti abbandonati

Sì, DECIMALE.



Oppure sviluppate il vostro tipo. in modo che il numero sia immagazzinato nella memoria come la sua parte intera e la sua parte frazionaria.
come due interi.



2 147 483 647.2 147 483 647



e occuperebbe tanta memoria quanto due interi. 8 byte.

 
multiplicator:

Sì, DECIMALE.



Oppure sviluppate il vostro tipo. in modo che il numero sia immagazzinato nella memoria come la sua parte intera e la sua parte frazionaria.
come due interi.



2 147 483 647.2 147 483 647



E occuperebbe tanta memoria quanto due interi. 8 byte.

c'è già un'aritmetica standard doppio-doppio

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:

c'è già un'aritmetica standard doppio-doppio

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

Al contrario, io voglio allontanarmi dal double-double, e voi suggerite il double-double.

I dables immagazzinano un numero in memoria in una forma imprecisa.
Ti ho dato un video.
 
multiplicator:
Io, al contrario, voglio allontanarmi dai dubles, e tu mi stai offrendo un duble-duble.

I dubles immagazzinano il numero in memoria in una forma imprecisa.
Ti ho dato un video.

Beh, se la velocità di calcolo e la compatibilità non sono importanti, allora sì, potete contare come volete.
Ma non appena questi numeri devono essere usati da qualche parte - dovrete riconvertire tutto in dable, in un numero impreciso.

 
Taras Slobodyanik:

Beh, se la velocità e la compatibilità non sono importanti, allora sì, potete contare come volete.
Ma appena questi numeri devono essere usati da qualche parte, bisogna riconvertire tutto in un numero doppio e impreciso.

Beh, in decimale va bene, sono in qualche modo divisi per l'altro e memorizzati in forma esatta.

 
multiplicator:

Beh, in decimale va bene. in qualche modo sono divisi per l'altro e memorizzati in forma esatta.

beh, non in decimale, ma in frazioni

e in decimale si deve accettare la stessa imprecisione-abbreviazioni, perché è impossibile (inutile) scrivere infiniti numeri esatti

 
multiplicator:

Beh, in decimale va bene, in qualche modo sono divisi l'uno nell'altro e memorizzati esattamente come sono.

Mi chiedo come farete a contare i logaritmi, le conversioni di grado con numeri non interi, usare la trigonometria, .... utilizzare librerie di terze parti, indicatori... Sono tutti in errore!
 
Aliaksandr Hryshyn:
Mi chiedo come farai a contare i logaritmi, le potenze con numeri non interi, usare la trigonometria, .... utilizzare librerie di terze parti, indicatori... Sono tutti soggetti a errori!
Siete abituati a lavorare con i numeri decimali piuttosto che con quelli binari.
e siete abituati a sapere dove può essere il margine di errore.
 

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

Questa è probabilmente la soluzione migliore, ma sarà il 40% più veloce (per qualche motivo mql rallenta nei cicli)

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