Скачать MetaTrader 5

Как преобразовать Double в Integer?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
kolega
14
kolega  
В попытке вычислить персентиль столкнулся с такой проблемой: в аргументе у массива должна быть переменная типа Integer, а при вычислении персентили получается значение типа Double, как преобразовать? Я пока на данный момент нашел решение через преобразование Double в String, а потом в Integer, но это как то не хорошо. Может кто подскажет другой способ?
Вот как выглядит у меня вычисление 10-ой персентили
int n;
double Array1[n], x;
ArraySort(Array1); x=Array1[StrToInteger(DoubleToStr(MathRound(n*0.1),0))];
Andrey Khatimlianskii
57557
Andrey Khatimlianskii  
Насколько я помню, можно просто взять инт, и прировнять ему дабл.
Примерно так:
int x; double n = 1.1; x = n; //x теперь = 1
Vladyslav Goshkov
2145
Vladyslav Goshkov  
komposter:
Насколько я помню, можно просто взять инт, и прировнять ему дабл.
Примерно так:
int x; double n = 1.1; x = n; //x теперь = 1
Вобщем смотря, что нужно. Более правильно
х = MathCeil(n);
Christo Tsvetanov
990
Christo Tsvetanov  
или:

x = MathRound(n);
kolega
14
kolega  
Itso:
или:

x = MathRound(n);
так я и применил MathRound, но при Array1[(MathRound(n*0.1),0)] -выдается ошибка - в аргументе требуется переменная типа Integer
MetaQuotes
Админ
25292
Renat Fatkhullin  
KOlegA:
Itso:
или:

x = MathRound(n);
так я и применил MathRound, но при Array1[(MathRound(n*0.1),0)] -выдается ошибка - в аргументе требуется переменная типа Integer
Просто упростите выражение путем выноса расчета за квадратные скобки.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий