Ошибки, баги, вопросы - страница 3487

fxsaber #:

Где хранится настройка свертывания/раскрытия группы входных параметров?

Каждый раз после компиляции группы раскрываются сколько их не закрывай?

Это поведение групп изрядно нервирует, особенно если параметров много, ведь в том и должно быть удобство, что бы группе быть схлопнутой.

Andrey Dik #:

Каждый раз после компиляции группы раскрываются сколько их не закрывай?

Это поведение групп изрядно нервирует, особенно если параметров много, ведь в том и должно быть удобство, что бы группе быть схлопнутой.

Только сегодня обнаружил схлопывание.

Сам использую их, как замену этого.

input string inGroup1 = "================Group1";
Число 1.2265, казалось бы что проще превратить его в 122650, надо только передвинуть точку и вроде не должно быть потери точности. Как же я ошибался...
Rorschach #:
Число 1.2265, казалось бы что проще превратить его в 122650, надо только передвинуть точку и вроде не должно быть потери точности. Как же я ошибался...
int ToInteger( const double Num, const double Alpha = 1e-5 )
{
  return((int)(Num + ((Num > 0) ? Alpha : -Alpha)));
}

void OnStart()
{
  Print((int)(1.2265 * 1e5));     // 122649
  Print(ToInteger(1.2265 * 1e5)); // 122650
}
fxsaber #:

а зачем нужна Alpha?
так достаточно

int Round(const double x) {
   return (int)(x+((x>0)?0.5:-0.5));
}
Nikolai Semko #:

а зачем нужна Alpha?
так достаточно

Иногда хочется, чтобы 1.6 приводилось к единице.

fxsaber #:

Иногда хочется, чтобы 1.6 приводилось к единице.

давно использую следующую троицу

int Ceil (const double x) {
   return (x-(int)x>0)?(int)x+1:(int)x;
}
//+------------------------------------------------------------------+
int Round(const double x) {
   return (int)(x+((x>0)?0.5:-0.5));
}
//+------------------------------------------------------------------+
int Floor(const double x) {
   return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x;
}

в данном случае используем Floor

Rorschach #:
Число 1.2265, казалось бы что проще превратить его в 122650, надо только передвинуть точку и вроде не должно быть потери точности.
Print((int)round(1.2265 * 100000)); //  122650

Вроде ничего не теряет.

Aleksandr Slavskii #:

Вроде ничего не теряет.

Главная проблема это производительность. Стандартная функция round() в несколько раз медленнее Round (), которую приводил выше.
Nikolai Semko #:

в данном случае используем Floor

К сожалению, она не подойдет для этого случая.

1.2265 * 1e5