NormalizeDouble парадокс - страница 7

 
transcendreamer:

почему-то дома на улицах нумеруют с 1

этажи в зданиях (обычно) с 1

комнаты с 1

ордера почему с 0? 

 

А часы, минуты и секунды нумеруют с 0.

 
Contender:

 

А часы, минуты и секунды нумеруют с 0.

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

потому что 0 на спидометре имеет физический смысл - нулевая скорость

а нулевой ордер это нонсенс

в человеческом языке принято говорить "во-первых", "во-вторых" ...

кто-нибудь слышал чтобы говорили "в-нулевых"?

...........

все равно приходится единицу из TotalOrders() вычитать

не понимаю эту упертость кто говорит что с нуля удобнее 

равно как и из ArraySize единицу вычитать

в чем удобство?

 

вообще тема все больше напоминает сборник анекдотов про программистов

не хочу никого обидеть если что 

вот например

-- программист спрашивает коллегу -- одолжи тысячу до зарплаты 

--  бери уж 1024 для ровного счета

 
transcendreamer:

не убедительно

каковы преимущества счета с 0 ?

для человека, не для машины 

Как-то и не ставил цели кого-то убеждать, главное, что сам убедился. Для этого надо покодить всякие сложные алгоритмы с массивами. 
 
Integer:
Как-то и не ставил цели кого-то убеждать, главное, что сам убедился. Для этого надо покодить всякие сложные алгоритмы с массивами. 

да и я тоже своего мнения не навязываю

когда мне пришлось работать с матрицами я видел что часто удобно чтобы сдвиг совпадал с его индексом элемента если в цикле перебирать

но было и множество противоположных примеров когда интуитивно проще чтобы последний индекс был равен размерности

или вот такой пример:       for(int i=0; i<variables+constants; i++)

здесь перебор переменных и констант, было бы интуитивно удобнее чтобы i=variables+1 означало переход в область констант

то есть по числу переменных + 1 - значит переменные закончились, начались константы - все просто

но нет - приходится помнить убавлять на единицу (либо отдельно делать перевод номера переменной в индекс массива

так что не все так однозначно

 
transcendreamer:

да и я тоже своего мнения не навязываю

когда мне пришлось работать с матрицами я видел что часто удобно чтобы сдвиг совпадал с его индексом элемента если в цикле перебирать

но было и множество противоположных примеров когда интуитивно проще чтобы последний индекс был равен размерности

или вот такой пример:       for(int i=0; i<variables+constants; i++)

здесь перебор переменных и констант, было бы интуитивно удобнее чтобы i=variables+1 означало переход в область констант

то есть по числу переменных + 1 - значит переменные закончились, начались константы - все просто

но нет - приходится помнить убавлять на единицу (либо отдельно делать перевод номера переменной в индекс массива

так что не все так однозначно

Потому что вы никак не можете отойти от школьной математики с отсчетом от единицы.

При отсчете от 0 не требуется помнить ни о каких единицах, все складывается само собой чудесным образом. 

Все просто и наглядно:

 for(int i=0; i<variables; i++) {}

 for(int i=variables; i<variables+constants; i++) {} 

или

  for(int i=0; i<variables+constants; i++){if(i<variables){}else{}}

Если вдруг потребовался отсчет от 1, значит в алгоритме что-то не так. 

 
transcendreamer:

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

потому что 0 на спидометре имеет физический смысл - нулевая скорость

а нулевой ордер это нонсенс

в человеческом языке принято говорить "во-первых", "во-вторых" ...

кто-нибудь слышал чтобы говорили "в-нулевых"?

...........

все равно приходится единицу из TotalOrders() вычитать

не понимаю эту упертость кто говорит что с нуля удобнее 

равно как и из ArraySize единицу вычитать

в чем удобство?

Кто вас заставляет говорить о "нулевых"? Говорите как вам удобно, о первых например. Но не забывайте об индексации.

OrdersTotal() выдаст вам 10, если количество открытых позиций == 10. Если вы вычитаете потом единицу, то вносите ошибку в расчёты.

ArraySize() выдаст вам 10 если массив имеет 10 ячеек. Если вы вычитаете потом единицу (не для обращения к ячейке по индексу, а для манипуляций с размером массива), то вносите ошибку в расчёты.

Количество ордеров вам выдаётся в привычном для вас формате. Если их 10, то и получите 10. А вот при обращении к элементу массива по индексу, нужно не забывать о начале с нуля.

 

  for(int i=0; i<variables+constants; i++){if(i<variables){}else{}}

 вот в этом самом месте теряется физический смысл переменной i 

 

я не понимаю как вы можете всерьез всё это говорить

это же противоестественно считать с нуля

в древнем вавилоне считали по 12 но ловкие евреи придумали десятичную систему потому что 10 пальцев на руках и до сих пор все пользуются

римляне придумали ужасные цифры, но сообразительные арабы сперли у индусов нормальные цифры и это прижилось

люди повсеместно считают с 1 и только маленький процент живут не так как все

 

например int n=OrdersTotal();

тогда было бы совершенно легко и интуитивно понятно for(i=1; i<=n; i++) {OrderSelect(i,.......);}  // если бы нумерация была нормальной человеческой

и физический смысл переменной i прост и ясен как солнечный свет: выбрал первый ордер, выбрал второй, третий... пока не дошел до последнего

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

 

вот например функция void DisplayChart(int draw_bars) - отрисовывает draw_bars последних баров

чтобы обратиться к первому бару в индикаторном буфере приходится вычитать 1: draw_bars-1

просто каждый раз лишнее действие и морока помнить это

 
А что? Тоже тема для голливудского боевика.  Давным давно, 300 лет тому назад все земляне разделились на два класса: одни считали, что считать нужно начиная с единицы, другие же считали, что надо начинать с нуля. И вот уже 300 лет между ними идет жестокая и неумолимая борьба... и тут появляется он (типа какой-нибудь бессмертный горец) и... объясняет всем, что отсчет надо вести в обратную сторону (и чуть-чуть наискосок). Дальше там туда сюда всякое и хэппи энд.
 
transcendreamer:

почему-то дома на улицах нумеруют с 1

этажи в зданиях (обычно) с 1

комнаты с 1

ордера почему с 0? 

Этажи в зданиях? Это - где как. То что у русских называется "первый этаж", у немцев называется "эрдгешосс", второй этаж у немцев называется "эрсте шток". В школе это вызвало у меня культурный шок, который потом прошёл - есть много друг Горацио...

У англичан кое-где не бывает 13-х номеров, что домов, что квартир.

У ордеров нулевого тикета не бывает. А то что счёт с нуля, так про это в документации специально сказано.

Хотите программировать - программируйте по правилам программистов.

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