Как в mql округлить число до десятков? NormalizeDouble не подходит

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
TheXpert
18274
TheXpert  
(int(x)/10)*10
Alexey Viktorov
25812
Alexey Viktorov  
Anton Sokolov:

Как в mql превратить цену 1652.25 в 1650, 1625,2 в 1620 и т.д. округлить до десятков

NormalizeDouble не подходит

Первый вариант

int a = MathFloor(1652.25/10)*10.0;

Второй вариант.

int a = (int)(1625.2/10)*10;

не проверен, но не должен округлять в большую сторону...

Alexey Volchanskiy
27265
Alexey Volchanskiy  
Alexander Laur:

число в формате деубле не всеглв правильно делится

nowi
1970
nowi  

у меня похожий вопрос: пчему при округлении до 5 цифры после запятой все равно нет нет и проскакивает число с большим количеством цифр...


double sint_value;
double in_a;
double in_b; // это все цены с 5 знаками.....
sint_value = NormalizeDouble(in_a / in_b, 5);

Ihor Herasko
21104
Ihor Herasko  
nowi:

у меня похожий вопрос: пчему при округлении до 5 цифры после запятой все равно нет нет и проскакивает число с большим количеством цифр...



А как Вы об этом узнаете? Наверное, распечатываете. Учтите, что при распечатке значения уже производится преобразование числа, а потому будет видно не совсем то, что там реально есть.
nowi
1970
nowi  
через comment
Dmitry Fedoseev
56693
Dmitry Fedoseev  
nowi:

у меня похожий вопрос: пчему при округлении до 5 цифры после запятой все равно нет нет и проскакивает число с большим количеством цифр...



Проблема вывода, его невозможно посмотреть. Но можно убедится, что в числе нет ничего лишнего через if и == или !=. 
Anton Sokolov
160
Anton Sokolov  

Вроде задачю решил с помощью  MathRound

   CurrentPrice = 10*MathRound(Bid/10);                               // Текущая цена

Alexandr Gavrilin
41608
Alexandr Gavrilin  
Anton Sokolov:

Вроде задачю решил с помощью  MathRound


int a = MathFloor(1652.25/10)*10.0;

вам сразу дали это решение вторым постом)))) только все одну и туже формулу записали по разному.

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

Nikolay Gaylis
16094
Nikolay Gaylis  

решал...

double d = 0.01;
Print(string(d));
Print(DoubleToString(d));

Принтило по разному)

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