Как выделить число из сложносоставной строки? - страница 4

 
Renat Akhtyamov #:

не тестировал, так читаю листинг

интересно, а запятая в числе останется?

Дело не в запятой - между ними принципиальная разница: StringToDouble - это обычная функция обрабатывающая возможные ошибки, а (double) - это весьма сомнительная языковая конструкция.

Вот пример, поясняющий разницу:

void OnStart()
{
  {
    ResetLastError();
    double x =       (double)("");
    Print(GetLastError()==ERR_SUCCESS); //(1)
  }
  {
    ResetLastError();
    double x = StringToDouble("");
    Print(GetLastError()==ERR_SUCCESS); //(2)
  }
}

В (1) случае результат: true, а 

во (2)                            false

 
Alexey Viktorov #:

Ну… это для окончательного варианта принципиально, а для «посмотреть» любой вариант пойдёт…

Чем отличается 

от 

Правильно, краткостью. Но о таланте говорить не приходится…

Кроме краткости необходима еще и понятность: краткая и понятная запись выглядела бы так:

bool IsNumber(ushort Char)
{
    return '0' <= Char && Char <= '9';
}
 
A100 #:

Кроме краткости необходима еще и понятность: краткая и понятная запись выглядела бы так:

А чем отличается 0<1 и 1>0

 
Alexey Viktorov #:

А чем отличается 0<1 и 1>0

Тем, что условия не сами по себе, а в паре и запись таким образом максимально приближена к математической:

0 <= ch <= 9

 
A100 #:

Дело не в запятой - между ними принципиальная разница: StringToDouble - это обычная функция обрабатывающая возможные ошибки, а (double) - это весьма сомнительная языковая конструкция.

Вот пример, поясняющий разницу:

В (1) случае результат: true, а 

во (2)                            false

весьма убедительно

умываю руки

получается что, если вывалится некое исключение, то терминал промолчит об этом?

хм

надо пощупать свои программы ;)

 
A100 #:

Тем, что условия не сами по себе, а в паре и запись таким образом максимально приближена к математической:

0 <= ch <= 9

То-есть если написать так

bool IsNumber( const ushort Char )
{
  return(0 <= Char && Char <= '9');
}

то будет правильней?

Я сомневаюсь… В MQL условия проверяются по-отдельности. Если первое условие не выполнено, то следующие не проверяются и не важно как написано 1>0 или 0<1

 
Alexey Viktorov #:

То-есть если написать так

то будет правильней?

будет понятней

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как выделить число из сложносоставной строки?

A100, 2023.12.21 17:24

Кроме краткости необходима еще и понятность: краткая и понятная запись выглядела бы так:

 
A100 #:

будет понятней

Вам.

Мне понятнее вариант от сабера. Потому, что по логике сравниваем char с числом. А у Вас сначала число сравнивается с char, и это вызывает остановку в чтении кода для осмысливания того, что же там написано.

Т.е. - тут у вас спор о вкусах и предпочтениях, а значит - никто не прав, и одновременно оба правы. Один я не прав )))

 
A100 #:

будет понятней

Не буду спорить, но мне и так понятно и даже так

bool IsNumber(const ushort Char)
 {
  switch(Char)
   {
    case '0': return true;
    case '1': return true;
    case '2': return true;
    case '3': return true;
    case '4': return true;
    case '5': return true;
    case '6': return true;
    case '7': return true;
    case '8': return true;
    case '9': return true;
    default: return false;
   }
 }
 
Artyom Trishkin #:

Вам.

Мне понятнее вариант от сабера. Потому, что по логике сравниваем char с числом. А у Вас сначала число сравнивается с char, и это вызывает остановку в чтении кода для осмысливания того, что же там написано.

Т.е. - тут у вас спор о вкусах и предпочтениях, а значит - никто не прав, и одновременно оба правы. Один я не прав )))

У нас не спор, а диалог. Спор это когда друг другу с пеной у рта доказывают что есть только одно правильное мнение а всё остальное чушь. И правильное мнение только моё.

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