Ошибка типа double (интерпретация как тип int)

 
Я обнаружил серьёзную ошибку в MetaTrader 4, связанную с некорректной обработкой чисел типа double.
Ошибка связана с тем, что все числа double без точки и знаков после запятой, программа идентифицирует всегда, как тип int с соответсвующими ограничениями. Проблема даже возникает в ходе выполнения программы, когда результатом операции есть число double без дробной части, что приводит к невозможности оперирования числами типа double в программе.

Проиллюстрирую наглядно.

1)
В данном случае я переменной s присваиваю граничное значение типа int '2147483647'.

#property indicator_chart_window
int start()
{
double s=2147483647;
Comment(s);
}

При этом результат выводится корректный '2147483647'.

2) Даже при увеличении значения переменной на 1 единицу (значение выходит за пределы типа int), результат стаёт некорректный:

#property indicator_chart_window
int start()
{
double s=2147483648;
Comment(s);
}

При этом результат в Comment выдаётся со знаком минус '-2147483648'.

А в случае дальнейшего увеличения значения переменной s, например при double s=3147483648 результат совсем искажается и в комментарии мы имеем значение '-1147483648' вместо '3147483648'

При этом при указании "double s=2147483648.0" результат появляется корректный, но ведь в программе в ходе вычислений в случае, если результатом операций есть число без дробной части, то дальше оно уже в программе не может использоваться..
 
Использую версию 4, билд 160.

В MetaTrader 3.xx этих проблем не наблюдается.
 
Все верно - так и задумано. Если хотите использовать double константы, то просто пишите
double s=2147483648.0;



В MetaTrader 3.xx этих проблем не наблюдается.

Там все переменные одного типа double.

 
Спасибо за ответ.
Это жутко неудобно. Ни в одном языке такого нет (ни в СИ, ни в Делфи). Странно, что так было задумано. Да и в словаре метатрейдера в описании типа double приведено такое описание:

An unimportant fractional part with the dot can be absent.
double d = 16;

Получается, что это утверждение "An unimportant fractional part with the dot can be absent." неверно. И пример 'double d = 16' не есть корректный.
 
Это жутко неудобно.

Сколько лет программирую, давно привык - вещественные константы пишу всегда явно с точкой. Неудобств никаких не ощущаю.
 
Но почему бы не сделать так, как в любом другом языке (в том же СИ, сходство с которым задекларировано).