| / | Форум |
|
drknn
30.08.2007 07:43
Читаем справку по MQL4 в редакторе терминала. Цитирую:
double MathCeil( double x) Функция возвращает числовое значение, представляющую наименьшее целое число, которое больше или равно x. Возникает резонный вопрос. Если функция возвращает целое и только целое число, тогда пуочему она сама имеет тип double? |
|
Эксперты на основе популярных торговых систем и алхимия оптимизации торгового робота (Продолжение) В данной статье автор продолжает обзор алгоритмов реализации простейших торговых систем и знакомит с некоторыми, актуальными подробностями использования результатов оптимизаций. Статья будет полезна начинающим трейдерам и начинающим экспертописателям |
|
Mathemat
30.08.2007 08:17
Например, потому, что аргумент может выходить за пределы типа
int. Скажем,
Print( MathCeil( 1234567891011234.56 ) );выдает результат 1234567891011235. Это число явно больше любого числа типа int. Ну а если нужен результат целого типа - тебе никто не мешает. .. Могу привести еще один "странный" пример: iVolume(), функция, тип возвращаемого значения которой - double. Причина та же. |
|
Integer
30.08.2007 09:01
drknn писал (а): Читаем справку по MQL4 в редакторе терминала. Цитирую: double MathCeil( double x) Функция возвращает числовое значение, представляющую наименьшее целое число, которое больше или равно x. Возникает резонный вопрос. Если функция возвращает целое и только целое число, тогда пуочему она сама имеет тип double? Аналогично возникает ризонный вопрос, почемы вы считаете, что она должна быть типа int? |
|
drknn
30.08.2007 10:48
Mathemat писал (а): выдает результат 1234567891011235 - но ведь число ЦЕЛОЕ!!!Например, потому, что аргумент может выходить за пределы типа int. Скажем, Print( MathCeil( 1234567891011234.56 ) );выдает результат 1234567891011235. Это число явно больше любого числа типа int. Ну а если нужен результат целого типа - тебе никто не мешает. .. Могу привести еще один "странный" пример: iVolume(), функция, тип возвращаемого значения которой - double. Причина та же. |
|
drknn
30.08.2007 10:51
Integer писал (а): Аналогично возникает ризонный вопрос, почемы вы считаете, что она должна быть типа int? Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void. double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы. |
|
komposter
30.08.2007 10:53
drknn писал (а): Попробуйте написать функцию, аналогичную MathCeil, но типа int, и опробуйте на ней пример Mathemat-а.Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void. double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы. |
|
komposter
30.08.2007 10:55
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
30.08.2007 10:59
komposter писал (а): Результат:Или можно даже проще 2007.08.30 09:55:54 __________ EURUSD,Daily: 1016612515 |
|
Integer
30.08.2007 11:18
drknn писал (а): Integer писал (а): Аналогично возникает ризонный вопрос, почемы вы считаете, что она должна быть типа int? Кгода пишем подпрограмму, если она возвращает нам целое число, мы объявляем подпрограмму, как имеющую целочисленный тип. Если не должна ни чего возвращать, то мы объявляем её как void. double MathCeil( double x) является точно такой же подпрограммой с тем лишь отличием, что её создал разработчик, а не пользователь. Просто я не вижу разницы. а это функция обрабатывающая число дабл и поэтому возвращает дабл. Проблем меньше будет, вот если возвращала инт, вот тут бы реально завыли |
|
Mathemat
30.08.2007 11:33
На самом деле совсем несложно написать и функцию, возвращающую
"целое" 1234567891011235, но для него придется придумывать его
представление, например, в двоичной системе счисления. Разумеется,
это будет уже не тип int, а некий массив цифр этого числа. Но для работы с подобными большими
целыми числами придется придумывать целую библиотеку. Потренируйся,
drknn, если интересно.
|
|
drknn
30.08.2007 13:00
Спасибо всем за разъяснения.
Скрипт komposter-а так вообще убил во мне все сомнения напрочь. :) Mathemat, если честно, то панически не хватает времени, поэтому и выходишь вот так на форум и спрашиваешь у тех, кто знает. Ну и конечно, стараешься задавать вопросы по-делу, а не фигню всякую. |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий