Скачать MetaTrader 5

Как получить целую часть из десятичного числа?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Игорь
55
Игорь  
Как получить целую часть из десятичного числа используя MQL-4?
Например 6,8989 => 6

---
C уважением.
Иван
1133
Иван  
a=6.8989;
b=MathFloor(a);
Print(b);

Вывод: 6
timbo
3139
timbo  
А можно и так:

double a = 6.888;
int b = a;
Print(b);

Вывод: 6


Хотя конечно флор-функция правильнее.
Валерий
1433
Валерий  
mibmib писал (а):
Как получить целую часть из десятичного числа используя MQL-4?
Например 6,8989 => 6

Функции double
double MathCeil( double x)
double MathFloor( double x)
double MathRound( double value)
возвращают наименьшее, наибольшее и ближайшее целое дробного числа.
Можно добавить ещё функцию
int IntDouble(double x)   
   {return(x);}
которая просто отбрасывает дробную часть x, независимо от знака.
Т.е., если присвоить переменной типа int , значение переменной типа double, то получим то, что нужно.
Mihail Matkovskij
2909
Mihail Matkovskij  
Valmars:

Функции double
double MathCeil( double x)
double MathFloor( double x)
double MathRound( double value)
возвращают наименьшее, наибольшее и ближайшее целое дробного числа.
Можно добавить ещё функцию
которая просто отбрасывает дробную часть x, независимо от знака.
Т.е., если присвоить переменной типа int , значение переменной типа double, то получим то, что нужно.
А как понять наибольшее и наименьшее ближайшее целое. В документации нет этого описания. На сколько я понимаю, наибольшим целым от числа 1.001 будет 2, а наименьшим, соответственно 1...? В прочем не знаю, это всего лишь догадки. Буду очень признателен, если поможете разобраться.
Ihor Herasko
11302
Ihor Herasko  
cyberdev:
А как понять наибольшее и наименьшее ближайшее целое. В документации нет этого описания. На сколько я понимаю, наибольшим целым от числа 1.001 будет 2, а наименьшим, соответственно 1...? В прочем не знаю, это всего лишь догадки. Буду очень признателен, если поможете разобраться.

MathCeil(2.4) = 3.0,

MathFloor(2.4) = 2.0,

MathRound(2.4) = 2.0,

MathCeil(-2.4) = -2.0,

MathFloor(-2.4) = -3.0,

MathRound(-2.4) = -2.0 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий