Ermitteln der Anzahl der Dezimalstellen beliebiger Zahlen (nicht nur Anführungszeichen) unter Umgehung von Digits() in MQL4 und MQL5 - Seite 11

 
multiplicator:
Float ist so ein ***. Diese Floats machen nichts als Ärger.

Wann werden sie normale Zahlen für die Programmierung machen?

Sie können dafür sorgen, dass eine Bruchzahl als ganze Zahl und als Bruchteil im Speicher abgelegt wird.

float ist einfacher, da es eine geringere Genauigkeit (Nachkommastellen) hat als double

Sind das normale Zahlen für die Programmierung? )))), anscheinend wollen Sie dezimal, aber leider, die Entwickler ausdrücklich gesagt (Suche admin Renat's Beiträge), dass es keine neuen Typen werden

verdoppeln in Bruch, hier hathttps://www.mql5.com/ru/forum/290279#comment_9396706

aber ich brauche immer noch +, -, *, /, um Operatoren zu überladen, also bin ich nicht interessiert.

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

float ist einfacher, da es eine geringere Genauigkeit (Nachkommastellen) hat als double

Sind das normale Zahlen für die Programmierung? )))), anscheinend wollen Sie dezimal, aber leider haben die Entwickler ausdrücklich gesagt (suchen Sie die Beiträge von Admin Renat), dass es keine neuen Typen geben wird

verdoppeln zu Bruch, hier hathttps://www.mql5.com/ru/forum/290279#comment_9396706

aber es müssen noch Operatoren +, -, *, / zu überladen, so weit nicht interessant aufgegeben

Ja, DECIMAL.



Oder entwickeln Sie einen eigenen Typ, so dass die Zahl im Speicher als ganzer und als gebrochener Teil gespeichert wird.
wie zwei ganze Zahlen.



2 147 483 647.2 147 483 647



und würde so viel Speicherplatz beanspruchen wie zwei ganze Zahlen. 8 Bytes.

 
multiplicator:

Ja, DECIMAL.



Oder entwickeln Sie einen eigenen Typ, um die Zahl als ganzzahligen Teil und als gebrochenen Teil zu speichern.
wie zwei ganze Zahlen.



2 147 483 647.2 147 483 647



Und es würde so viel Speicherplatz beanspruchen wie zwei ganze Zahlen. 8 Bytes.

es gibt bereits eine Standard-Doppel-Doppel-Arithmetik

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:

es gibt bereits eine Standard-Doppel-Doppel-Arithmetik

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

Im Gegenteil, ich will weg von Double-Double, und Sie schlagen Double-Double vor.

Tabellen speichern die Zahl in einer ungenauen Form im Speicher.
Ich habe Ihnen ein Video gegeben.
 
multiplicator:
Ich hingegen will weg von den Dubles, und Sie bieten mir ein Duble-Duble an.

Fehler speichern die Zahl in einer ungenauen Form im Speicher.
Ich habe Ihnen ein Video gegeben.

Nun, wenn Rechengeschwindigkeit und Kompatibilität nicht wichtig sind, dann können Sie zählen, was Sie wollen.
Aber sobald diese Zahlen irgendwo verwendet werden müssen, müssen Sie alles wieder in eine ungenaue Zahl umrechnen.

 
Taras Slobodyanik:

Nun, wenn Geschwindigkeit und Kompatibilität nicht wichtig sind, dann können Sie zählen, was Sie wollen.
Aber sobald diese Zahlen irgendwo verwendet werden sollen, müssen Sie alles wieder in eine doppelte, ungenaue Zahl umrechnen.

Im Dezimalsystem ist das in Ordnung, da sie irgendwie durcheinander geteilt und in exakter Form gespeichert werden.

 
multiplicator:

Nun, im Dezimalsystem ist das in Ordnung. Irgendwie werden sie durcheinander geteilt und in exakter Form gespeichert.

Nun, nicht in Dezimalzahlen, sondern in Brüchen

und im Dezimalsystem muss man die gleichen Ungenauigkeiten und Abkürzungen in Kauf nehmen, da es unmöglich (unnötig) ist, unendlich viele exakte Zahlen zu schreiben.

 
multiplicator:

Nun, im Dezimalsystem ist das in Ordnung. Irgendwie werden sie ineinander geteilt und genau so gespeichert, wie sie sind.

Ich frage mich, wie Sie Logarithmen zählen, Grad-Umrechnungen mit nicht-ganzzahligen Zahlen vornehmen, Trigonometrie anwenden, .... Bibliotheken von Drittanbietern verwenden, Indikatoren... Sie sind alle im Irrtum!
 
Aliaksandr Hryshyn:
Ich frage mich, wie Sie Logarithmen und Potenzen mit nicht-ganzzahligen Zahlen berechnen, Trigonometrie anwenden, .... Bibliotheken von Drittanbietern verwenden, Indikatoren... Sie sind alle fehleranfällig!
Sie sind es gewohnt, mit Dezimalzahlen und nicht mit Binärzahlen zu arbeiten.
und Sie sind daran gewöhnt, wo die Fehlermarge liegen könnte.
 

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

Dies ist wahrscheinlich die beste Lösung, aber es wird 40% schneller sein (aus irgendeinem Grund verlangsamt sich mql in Schleifen)

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