WTF? MathMod(1.01,0.001) == 0.001???

 
Столкнулся в MT5. MathMod(1.01,0.001) == 0.001 То как меня учили математике, то остаток от деления должен быть равен 0. Почему терминал выдает 0.001? Возможно моя школа устарела?)
 

Поскольку ожидаемый остаток целочисленный, поэтому, чтобы соблюсти порядок, приводим к типу  (int).

Ловкость рук и никакого ...

Код:

void OnStart()
  {
   double val1=MathMod(1.01,0.001);
   float val2=(float)fmod(1.01,0.001);

   int val3=(int)MathMod(1.01,0.001);
   int val4=(int)fmod(1.01,0.001);
   
   Print(" val1=",val1);
   Print(" val2=",val2);

   Print(" val3=",val3);
   Print(" val4=",val4);

  }
//+------------------------------------------------------------------+


Результат:

val1=0.0009999999999999879
val2=0.001
val3=0
val4=0

 
Mikhail Nazarenko:
Столкнулся в MT5. MathMod(1.01,0.001) == 0.001 То как меня учили математике, то остаток от деления должен быть равен 0. Почему терминал выдает 0.001? Возможно моя школа устарела?)

Потому, что функция возвращает вещественный остаток от деления двух чисел.

Это не школа устарела, это вы чуток устарели:)))

 

Эти вещественные вычисления, по моему мнению, очень, как минимум, странные, например, на языке Lua под терминал Квик вычисления вида
 2 - 0 = 1.9999

 2 + 0 = 2.0

Не уверен, что это правильная реализация.

 
Alexey Viktorov:

Потому, что функция возвращает вещественный остаток от деления двух чисел.

Это не школа устарела, это вы чуток устарели:)))

Ладно, поучи старика.) Что такое вещественный остаток, ты забыл объяснить?

 
Все кто изрыгает не по теме идет в бан.
 
Mikhail Nazarenko:

Ладно, поучи старика.) Что такое вещественный остаток, ты забыл объяснить?

Ты это всерьёз?

 
Alexey Viktorov:

Ты это всерьёз?

Да! Все смотрят на тебя, тыже не пустозвон я надеюсь.

 
Mikhail Nazarenko:

Да! Все смотрят на тебя, тыже не пустозвон я надеюсь.

.

Соответственно, вещественный остаток, это остаток в виде вещественного числа.

 
Alexey Viktorov:

.

Соответственно, вещественный остаток, это остаток в виде вещественного числа.

Экспонат - это то, что экспонируется ))

 
Mikhail Nazarenko:
Столкнулся в MT5. MathMod(1.01,0.001) == 0.001 То как меня учили математике, то остаток от деления должен быть равен 0. Почему терминал выдает 0.001? Возможно моя школа устарела?)

потому что 1.01  не представляется в точности, double ..

образно: оно для компьютера 1.009(9) , соотв целая часть от x/0.001 получается 100  и остаток (модуль) 0.0009(9) который приводится к 0.001

c double надо быть крайне осторожным из-за подобных вещей и всегда про них помнить

Причина обращения: