Как нейтрализовать пятый знак после запятой

 

Вопрос уже избитый. Но всё ж попробую поднять. У моего брокера МТ-4 с пятью знаками после запятой. У меня и не только у меня этот знак вызывает только путаницу. Говорят, что преобразовать МТ-4 от моего брокера для работы с четырьмя знаками никак нельзя (ИЛИ ВСЁ ТАКИ МОЖНО???)... Раз нельзя, то есть ли какой-то способ, чтобы этот знак как-то выделить, чтобы он не путался. Ну может быть уменьшить его, увеличить, перевернуть, подчеркнуть, перекрасить, другим шрифтом выделить или ещё как??? Может быть я чего-то не знаю, но я вроде всё в терминале перепробовал, способа решить проблему не обнаружил...

Кстати неплохо если-бы была в МТ-4 вообще возможность изменять размер текста, и цены на самом графике...Для меня лично, как то всё мелковато...

 
Это все равно что в магазине попросить, чтоб ценники были без копеек, т.к. "они меня только путают". Смешно.
 
nelson1:

Вопрос уже избитый. Но всё ж попробую поднять. У моего брокера МТ-4 с пятью знаками после запятой. У меня и не только у меня этот знак вызывает только путаницу. Говорят, что преобразовать МТ-4 от моего брокера для работы с четырьмя знаками никак нельзя (ИЛИ ВСЁ ТАКИ МОЖНО???)... Раз нельзя, то есть ли какой-то способ, чтобы этот знак как-то выделить, чтобы он не путался. Ну может быть уменьшить его, увеличить, перевернуть, подчеркнуть, перекрасить, другим шрифтом выделить или ещё как??? Может быть я чего-то не знаю, но я вроде всё в терминале перепробовал, способа решить проблему не обнаружил...

Кстати неплохо если-бы была в МТ-4 вообще возможность изменять размер текста, и цены на самом графике...Для меня лично, как то всё мелковато...

Попросите об этом брокера. Кое где убирают.
 
nelson1:

Вопрос уже избитый. Но всё ж попробую поднять. У моего брокера МТ-4 с пятью знаками после запятой. У меня и не только у меня этот знак вызывает только путаницу. Говорят, что преобразовать МТ-4 от моего брокера для работы с четырьмя знаками никак нельзя (ИЛИ ВСЁ ТАКИ МОЖНО???)... Раз нельзя, то есть ли какой-то способ, чтобы этот знак как-то выделить, чтобы он не путался. Ну может быть уменьшить его, увеличить, перевернуть, подчеркнуть, перекрасить, другим шрифтом выделить или ещё как??? Может быть я чего-то не знаю, но я вроде всё в терминале перепробовал, способа решить проблему не обнаружил...

Кстати неплохо если-бы была в МТ-4 вообще возможность изменять размер текста, и цены на самом графике...Для меня лично, как то всё мелковато...

https://docs.mql4.com/ru/convert/NormalizeDouble

double cena=NormalizeDouble(MarketInfo("EURUSD",MODE_BID),4);

 
Barbarian:

https://docs.mql4.com/ru/convert/NormalizeDouble

double cena=NormalizeDouble(MarketInfo("EURUSD",MODE_BID),4);

Да дело-то не в программировании, а в недовольстве от отображения цены в интерфейсе МТ4, чем тут этя строчка кода поможет, тут терминал переписывать надо )))
Да и не нормализация нужна, а DoubleToStr до 4 знаков...
 
evillive:
Да дело-то не в программировании, а в недовольстве от отображения цены в интерфейсе МТ4, чем тут этя строчка кода поможет, тут терминал переписывать надо )))
Да и не нормализация нужна, а DoubleToStr до 4 знаков...

Это смотря для каких целей, если преобразовать в string, тогда DoubleToStr() https://docs.mql4.com/ru/convert/DoubleToStr поможет, а если использовать в расчетах, то NormalizeDouble() будет достаточно. Я, что бы не получать предупреждений в новом MQL4 (там более жестко с приведением типов) во время использования значений double в функциях MQL4 где параметром идут int, преобразую double значения в string и из него уже в int. Как видишь вариантов несколько.

А если человека раздражает пятизнак в терминале из-за наглядности, то кто мешает поместить значение цены в четырехзнаке в правый угол, да еще сделать покрупнее и цветом выделить? Проблем думаю нет вообще. То что я привел в первом примере с NormalizeDouble(), используется повсеместно многими программистами MQL4 как раз в расчетах.

 
Barbarian:

... Я, что бы не получать предупреждений в новом MQL4 (там более жестко с приведением типов) во время использования значений double в функциях MQL4 где параметром идут int, преобразую double значения в string и из него уже в int. Как видишь вариантов несколько.

Нафига??? Стоя в гамаке?

double a=10.0;
int    b=(int)a;


 
Barbarian:

Это смотря для каких целей, если преобразовать в string, тогда DoubleToStr() https://docs.mql4.com/ru/convert/DoubleToStr поможет, а если использовать в расчетах, то NormalizeDouble() будет достаточно. Я, что бы не получать предупреждений в новом MQL4 (там более жестко с приведением типов) во время использования значений double в функциях MQL4 где параметром идут int, преобразую double значения в string и из него уже в int. Как видишь вариантов несколько.

А если человека раздражает пятизнак в терминале из-за наглядности, то кто мешает поместить значение цены в четырехзнаке в правый угол, да еще сделать покрупнее и цветом выделить? Проблем думаю нет вообще. То что я привел в первом примере с NormalizeDouble(), используется повсеместно многими программистами MQL4 как раз в расчетах.


вот сначала перечитайте вопрос ТС, ему не код расчётов нужен, а именно новый интерфейс
 

artmedia70:
Нафига??? Стоя в гамаке?

Неявное приведение типов из double в int так не делается, по крайней мере тут об этом написано https://www.mql5.com/ru/docs/basis/types/casting (в разделе справки нового MQL4 об этом же пишут). А вот из int в double можно.

Кстати плохо, что в MQL4 нет таких же возможностей как в С++.

 
Barbarian:

Неявное приведение типов из double в int так не делается, по крайней мере тут об этом написано https://www.mql5.com/ru/docs/basis/types/casting (в разделе справки нового MQL4 об этом же пишут). А вот из int в double можно.

Кстати плохо, что в MQL4 нет таких же возможностей как в С++.

Каким образом через строку не потеряется дробная часть double ? Преобразование double в int в любом случае подразумевает отсечение дробной части действительного числа. Если нужно округлять по правилам - для этого есть другие функции, в частности MathRound()

Каким образом преобразование

double a=10.0;
string b=DoubleToString(a,0);
int    c=StrToInteger(b);

лучше, чем

int    c=(int)a;
Если в итоге получим целое 10 ?
 
artmedia70:

Каким образом через строку не потеряется дробная часть double ? Преобразование double в int в любом случае подразумевает отсечение дробной части действительного числа. Если нужно округлять по правилам - для этого есть другие функции, в частности MathRound()

Каким образом преобразование

лучше, чем

Если в итоге получим целое 10 ?

double MathRound( double value) - функция возвращает double. Типы данных double и int разные, даже если сделаешь DoubleToString(a,0). У них размер разный и компилятор выдаст варнинг (предупреждение). А

int StrToInteger(string value) возвращает тип int. Поэтому когда в качестве параметра в функцию требуется передать int и мы преобразуем через DoubleToString - StrToInteger - то на выходе получаем чистый int, а не усеченный double до нулевого знака после запятой.

Размеры типов на всякий случай:

int - 4 байта

double - 8 байт

Я не знаю как лучше, но думаю, что без варнингов лучше по любому, плюс экономия памяти, когда переменных много это более заметно и плюс ко всему корректность и точность вычислений. Вот к примеру про приведение типов сказано тут http://www.sql.ru/forum/220914/preobrazovanie-tipov-int-double и вот тут http://cppstudio.com/uchebniki/yazyk-programmirovaniya-s/yavnoe-i-neyavnoe-preobrazovanie-tipov-dannyx-c/

Плохо, что в MQL4 не предусмотрено приведение типов с использованием cast`ов.

Причина обращения: