Вопрос к разработчикам

 
Читаем справку по MQL4 в редакторе терминала. Цитирую:

double MathCeil( double x)
Функция возвращает числовое значение, представляющую наименьшее целое число, которое больше или равно x.

Возникает резонный вопрос. Если функция возвращает целое и только целое число, тогда пуочему она сама имеет тип double?
 
Например, потому, что аргумент может выходить за пределы типа int. Скажем,

Print( MathCeil( 1234567891011234.56 ) );
выдает результат 1234567891011235. Это число явно больше любого числа типа int. Ну а если нужен результат целого типа - тебе никто не мешает. ..

Могу привести еще один "странный" пример: iVolume(), функция, тип возвращаемого значения которой - double. Причина та же.
 
drknn:
Читаем справку по MQL4 в редакторе терминала. Цитирую:

double MathCeil( double x)
Функция возвращает числовое значение, представляющую наименьшее целое число, которое больше или равно x.

Возникает резонный вопрос. Если функция возвращает целое и только целое число, тогда пуочему она сама имеет тип double?

Аналогично возникает ризонный вопрос, почемы вы считаете, что она должна быть типа int?
 
Mathemat:
Например, потому, что аргумент может выходить за пределы типа int. Скажем,

Print( MathCeil( 1234567891011234.56 ) );
выдает результат 1234567891011235. Это число явно больше любого числа типа int. Ну а если нужен результат целого типа - тебе никто не мешает. ..

Могу привести еще один "странный" пример: iVolume(), функция, тип возвращаемого значения которой - double. Причина та же.

выдает результат 1234567891011235 - но ведь число ЦЕЛОЕ!!!
 
Integer:

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

Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void.

double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы.
 
drknn:
Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void.
double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы.
Попробуйте написать функцию, аналогичную MathCeil, но типа int, и опробуйте на ней пример Mathemat-а.
 
komposter:
Попробуйте написать функцию, аналогичную MathCeil, но типа int, и опробуйте на ней пример Mathemat-а.
Или можно даже проще:
int start()
{
   double d = 1234567891011235.0;
   Print( test(d) );
}
int test( double d_val )
{
   int int_val = d_val;
   return(int_val);
}
 
komposter:
Или можно даже проще
Результат:
2007.08.30 09:55:54 __________ EURUSD,Daily: 1016612515
 
drknn:
Integer:

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

Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void.

double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы.

а это функция обрабатывающая число дабл и поэтому возвращает дабл. Проблем меньше будет, вот если возвращала инт, вот тут бы реально завыли
 
На самом деле совсем несложно написать и функцию, возвращающую "целое" 1234567891011235, но для него придется придумывать его представление, например, в двоичной системе счисления. Разумеется, это будет уже не тип int, а некий массив цифр этого числа. Но для работы с подобными большими целыми числами придется придумывать целую библиотеку. Потренируйся, drknn, если интересно.
 
Спасибо всем за разъяснения.
Скрипт komposter-а так вообще убил во мне все сомнения напрочь. :)
Mathemat, если честно, то панически не хватает времени, поэтому и выходишь вот так на форум и спрашиваешь у тех, кто знает.
Ну и конечно, стараешься задавать вопросы по-делу, а не фигню всякую.
Причина обращения: