Alexandr Sokolov: Да, мой вариант скорей всего не самый лучший, но так как ранее я ничего не нашёл по этому поводу - это лучшее к чему я самостоятельно додумался, об этом я комментариями выше вам написал, а свой вариант вы так и не предложили
Сравнил вот такие варианты:
int ds(double v){
string s=(string)v;
int l=StringLen(s);
int n=l-StringFind(s,".",0)-1;
if(StringSubstr(s,l-1,1)=="0")n--;
return(n);
}
int d(double x){
int n;
for(n=0;n<8;n++){
if(x==NormalizeDouble(x,n)){
return(n);
}
}
return(n-1);
}
Вариант со строкой чуть-чуть быстрее, к тому же он не ограничен 8-ю знаками, как функция d(). Ну и гарантия правильности - подсчет по тому виду как терминал отображает число.
Вы можете назвать хотя бы один случай применения указанного алгоритма?
Был один случай для торговой панели, что бы в текстовое поле выводить размер лота с правильным количеством знаков после запятой. Это единственный случай.
Был один случай для торговой панели, что бы в текстовое поле выводить размер лота с правильным количеством знаков после запятой. Это единственный случай.
Т.е. он в случае 1 лота выводит "1", а 0.01 лота - "0.01"?
Да. Но ведь надо знать, сколько знаков после запятой выводить.
Т.е. Вы определяете по введенному юзером значению мин.лота (или шага лота), сколько в этом значении цифр после запятой, потом это сохраняете для нормализации будущих значений?
Т.е. Вы определяете по введенному юзером значению мин.лота (или шага лота), сколько в этом значении цифр после запятой, потом это сохраняете для нормализации будущих значений?
Что непонятного? У цены есть Digits(), а у объёма - нет. Вот его таким способом и вычисляют.
А зачем нужен digits объёма? Затем же зачем и digits цены!
Я вообще не про это писал. Идея с приведением дабла к строке, чтоб потом в строке посчитать знаки - это дичь полнейшая. На чем ни делай.
А что такого? Пока этот вариант самый быстрый, самый функциональный, гарантированно правильный. Какие у вас варианты?
Да, мой вариант скорей всего не самый лучший, но так как ранее я ничего не нашёл по этому поводу - это лучшее к чему я самостоятельно додумался, об этом я комментариями выше вам написал, а свой вариант вы так и не предложили
Сравнил вот такие варианты:
Вариант со строкой чуть-чуть быстрее, к тому же он не ограничен 8-ю знаками, как функция d(). Ну и гарантия правильности - подсчет по тому виду как терминал отображает число.
Выбираю вариант с преобразованием в строку.
А что такого? Пока этот вариант самый быстрый, самый функциональный, гарантированно правильный. Какие у вас варианты?
Вы можете назвать хотя бы один случай применения указанного алгоритма?
Вы можете назвать хотя бы один случай применения указанного алгоритма?
Был один случай для торговой панели, что бы в текстовое поле выводить размер лота с правильным количеством знаков после запятой. Это единственный случай.
Был один случай для торговой панели, что бы в текстовое поле выводить размер лота с правильным количеством знаков после запятой. Это единственный случай.
Т.е. он в случае 1 лота выводит "1", а 0.01 лота - "0.01"?
Т.е. он в случае 1 лота выводит "1", а 0.01 лота - "0.01"?
Не совсем так. В зависимости от минимального лота и шага лота. Если минимальный лот 0.01, то 1 отображается как 1.00
Не совсем так. В зависимости от минимального лота и шага лота. Если минимальный лот 0.01, то 1 отображается как 1.00
O.o
Ну так получается, что вы не используете свою функцию, а всё равно выводите что-то вроде DoubleToString(LotSize, <some const value>), нет?
O.o
Ну так получается, что вы не используете свою функцию, а всё равно выводите что-то вроде DoubleToString(LotSize, <some const value>), нет?
Да. Но ведь надо знать, сколько знаков после запятой выводить.
Да. Но ведь надо знать, сколько знаков после запятой выводить.
Т.е. Вы определяете по введенному юзером значению мин.лота (или шага лота), сколько в этом значении цифр после запятой, потом это сохраняете для нормализации будущих значений?
Т.е. Вы определяете по введенному юзером значению мин.лота (или шага лота), сколько в этом значении цифр после запятой, потом это сохраняете для нормализации будущих значений?
Что непонятного? У цены есть Digits(), а у объёма - нет. Вот его таким способом и вычисляют.
А зачем нужен digits объёма? Затем же зачем и digits цены!