Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В Маркете более 400 индикаторов. Попробуй любой из них!
anishukserg
38
anishukserg 2010.04.03 15:36 
У меня вопрос к разработчикам: Почему функции MathCeil() MathFloor() и MathRound(), которые по смыслу должны возвращать числа целого типа, у вас возращают числа типа double ?
Документация по MQL5: Математические функции / MathCeil
Документация по MQL5: Математические функции / MathCeil
  • www.mql5.com
Математические функции / MathCeil - Документация по MQL5
Slawa
Модератор
6679
Slawa 2010.04.05 11:27  

Потому что соответствующие crt-функции (c run time library) возвращают данные типа double. Мы просто транслируем вызов в crt.

Alexander
1510
Alexander 2010.04.05 14:50  
stringo:

Потому что соответствующие crt-функции (c run time library) возвращают данные типа double. Мы просто транслируем вызов в crt.

что в таком случае делать с предупреждениями о возможной потере данных при конвертации?

int number = MathRound(1.1);

 

Ilyas
1184
Ilyas 2010.04.05 15:18  

указать компилятору явно

int number=(int) MathRound(1.1);


anishukserg
38
anishukserg 2010.04.06 06:53  
А нельзя сделать так что бы все эти функции вовращали целые числа. Для простого трайдера было бы понятнее и логичнее! Я как понимаю, вы так сделали из -за того, что так вам удобнее....
Ilyas
1184
Ilyas 2010.04.06 13:28  

вот Вам решение

int MathRoundI(double x) { return((int)MathRound(x)); }



Компилятор "заинлайнит" данную функцию и потери в производительности не будет

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