Скачать MetaTrader 5

Странности типа double - страница 2

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

NormalizeDouble() не пробовали?

P.S. Есть такая функция, она есть в stdlib.mq4:

string DoubleToStrMorePrecision(double number,int precision)

is_vale
36
is_vale  

ilunga:

убрал

чтобы скомпилировалось.

Запустил. создалась линия на уровне 1.33147

Что я делаю не так? ((

Ептеть... Я уже ничего не понимаю! Снова привел индикатор к тому виду который был раньше (и который резал до 4 знаков), т. е. использованию StrToDouble и все пошло как по маслу.

ilunga - похоже Вы как раз все делаете "так", это я что-то "не так" наворочал ;) Завтра буду рыть, пытаться вновь получить такой результат, что бы понять в чем ошибся...

Всем СПАСИБО!

khorosh
9561
khorosh  
is_vale:

Народ подскажите как бороться с количеством знаков дробной части!!! Я уже все мозги вывихнул!

Имеем строку содержащую число с плавающей точкой, нужно его поместить в переменную типа double для дальнейшего использования, причем без каких либо округлений дробной части. Естественной реакцией на задачу было использование функции StrToDouble, но эта зараза округляет число до 4 знаков после запятой!!! Возникает естественный вопрос:

- "А кто ее просил об этом???"

Пошел по пути создания своей функции Str2Double, ниже ее привожу:


До строки возврата, а конкретнее

все идет нормально, но

снова округляет дробную часть до 4 знаков!!! Что за дебилизм? Как это побороть? В частности у меня в поступающих данных есть много чисел с 5 знаками после запятой, а MQL мне режет до четырех хоть тресни.


Проверил, не округляет:

string n="1.23456";
double m =StrToDouble(n);
Comment(DoubleToStr(m,5));
Print(DoubleToStr(m,5)); 

Если хотите, чтобы Comment() и Print() выводили более 4 знаков после запятой нужно пользоваться функцией

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