Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 11

 
multiplicator:
float это такое ***. одни проблемы из-за этих флоатов.

когда уже нормальные числа сделают для программирования, а то мучься тут.

можно же сделать чтобы дробное число в памяти хранилось как целая и дробная часть.

с float как раз и проще, там меньше точность (знаков после,) чем у double

нормальные числа для программирования? )))), видимо Вы хотите тип decimal, но увы, разработчики однозначно сказали (посты админа Рената поиском), что новых типов не будет

double в дробь, вот делал https://www.mql5.com/ru/forum/290279#comment_9396706 

, но там еще нужно операторы +, -, *, / перегрузить, пока не интересно бросил

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

с float как раз и проще, там меньше точность (знаков после,) чем у double

нормальные числа для программирования? )))), видимо Вы хотите тип decimal, но увы, разработчики однозначно сказали (посты админа Рената поиском), что новых типов не будет

double в дробь, вот делал https://www.mql5.com/ru/forum/290279#comment_9396706 

, но там еще нужно операторы +, -, *, / перегрузить, пока не интересно бросил

да, DECIMAL



Или свой тип разработать. чтобы число хранилось в памяти как его целая часть и как его дробная часть.
типа как два интегера.



2 147 483 647.2 147 483 647



и памяти будет занимать как два интегера. 8 байт.

 
multiplicator:

да, DECIMAL



Или свой тип разработать. чтобы число хранилось в памяти как его целая часть и как его дробная часть.
типа как два интегера.



2 147 483 647.2 147 483 647



и памяти будет занимать как два интегера. 8 байт.

уже есть стандарт дабл-дабл (Double-double arithmetic)

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:

уже есть стандарт дабл-дабл (Double-double arithmetic)

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

я наоборот от даблов хочу уйти, а вы мне предлагаете дабл-дабл.

даблы хранят число в памяти в неточном виде.
видео давал.
 
multiplicator:
я наоборот от даблов хочу уйти, а вы мне предлагаете дябл-дабл.

даблы хранят число в памяти в неточном виде.
видео давал.

Ну если скорость расчета и совместимость не важны, тогда да можно считать как душе угодно.
Но как только эти числа нужно будет где-то использовать - придется всё переводить назад в дабл, в неточное число.

 
Taras Slobodyanik:

Ну если скорость расчета и совместимость не важны, тогда да можно считать как душе угодно.
Но как только эти числа нужно будет где-то использовать - придется всё переводить назад в дабл, в неточное число.

ну в decimal там же все нормально. как-то они делятся друг на друга и сохраняются в точном виде.

 
multiplicator:

ну в decimal там же все нормально. как-то они делятся друг на друга и сохраняются в точном виде.

ну, не в decimal, а в дробях

а в десятичных нужно соглашаться на такие же неточности-сокращения, потому как невозможно (ненужно) записывать бесконечные точные числа

 
multiplicator:

ну в decimal там же все нормально. как-то они делятся друг на друга и сохраняются в точном виде.

Интересно, как вы будете логарифмы считать, возведения в степень нецелыми числами, использовать тригонометрию,.... использовать сторонние библиотеки, индикаторы... Они все с погрешностью!
 
Aliaksandr Hryshyn:
Интересно, как вы будете логарифмы считать, возведения в степень нецелыми числами, использовать тригонометрию,.... использовать сторонние библиотеки, индикаторы... Они все с погрешностью!
ну как-то привычнее работать с десятичными числами чем с двоичными.
и ты привык уже где там погрешности могут быть.
 

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

Наверное это лучшее решение, правда вот так будет работать на 40% быстрее (почему-то mql подтормаживает в циклах)

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() работает тольк...
Причина обращения: