Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Появилась идея? Обсуди ее на форуме трейдеров!
Alexandr Bryzgalov
23784
Alexandr Bryzgalov 2012.06.07 07:28 

порядок вычисления значения, что и как сначало будет вычислятся? особенно интересует действие в скобках:

MathRound(percentage/margin/step)*step;
Alexandr Bryzgalov
23784
Alexandr Bryzgalov 2012.06.07 07:32  

как будет вычислено значение в скобках?

так:

(percentage/margin)/step

или так:

percentage/(margin/step)
Vitalie Postolache
10989
Vitalie Postolache 2012.06.07 07:49  
percentage/margin/step=(percentage/margin)/step

12/4/2=(12/4)/2=1,5

Так понятнее?

PapaYozh
3768
PapaYozh 2012.06.07 07:53  
sanyooooook:

как будет вычислено значение в скобках?

так:

или так:


Должно считаться слева направо.

Т.е. так:

percentage / margin / step == ( percentage / margin ) / step
Vladimir
1592
Vladimir 2012.06.07 07:55  
sanyooooook:

порядок вычисления значения, что и как сначало будет вычислятся? особенно интересует действие в скобках:

Я в таких случаях ставлю ещё одни скобки чтобы не заморачиваться и точно быть уверенным в какой последовательности будет вычисление.
Alexandr Bryzgalov
23784
Alexandr Bryzgalov 2012.06.07 08:01  
BeerGod:
Я в таких случаях ставлю ещё одни скобки чтобы не заморачиваться и точно быть уверенным в какой последовательности будет вычисление.

какое продуманное действие, а если формулу писал не ты?
Alexandr Bryzgalov
23784
Alexandr Bryzgalov 2012.06.07 08:02  
PapaYozh:


Должно считаться слева направо.

Т.е. так:


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

ЗЫ: благодарю

Vadim Zhunko
5219
Vadim Zhunko 2012.06.07 08:08  
С точки зрения математики не важно, где будут стоять скобки. Можно без них. Но в реальности расположение скобок в равноприоритетных действиях может сильно сказаться на результате.
Sceptic Philozoff
Модератор
17848
Sceptic Philozoff 2012.06.07 12:30  
Zhunko:
С точки зрения математики не важно, где будут стоять скобки. Можно без них. Но в реальности раположение скобок в равноприоритетных действиях может сильно сказаться на результате.

Здесь - важно, т.к. операция деления не ассоциативна (в отличие от умножения). Скобки можно в данном случае и не ставить, но для ясности, если кто-то путается, будет так:

a / b / c = ( a / b ) / c

Yury Reshetov
13482
Yury Reshetov 2012.06.07 15:20  
sanyooooook:

порядок вычисления значения, что и как сначало будет вычислятся? особенно интересует действие в скобках:

Лучше не заморачиваться, а ставить скобки. Дело в том, что в разных языках программирования, а иногда и в одних и тех же языках, но разных компиляторах, результаты будут разные. Поскольку мне приходится иметь дело с разными языками, то предпочитаю скобки, нежели попусту терять время на попытки выяснить приоритет операций. А тем паче, что иногда один и тот же код приходится переносить на другие языки программирования, тогда проблем не оберешься.

А в данном случае, однозначно избавиться от скобок лучше всего так, поскольку правое выражение уже независимо от приоритета операций:

( a / b ) / c = a * c / b

P.S. Всегда ставлю фигурные скобки, дабы обозначить блок операторов, даже если в этом самом блоке всего один единственный оператор. Во первых, более читабельно, т.к. я всегда расставляю отступы и не скуплюсь на комменты, а во вторых, если понадобится добавить еще один или более операторов, то меньше возни. А чем меньше возни и более читабельно, тем лучше, чем заморочки с "экономией" на нескольких нажатиях клавиш.

Andrew
28
Andrew 2012.06.07 16:42  

( a / b ) / c = a * c / b


ух как красиво. Вот только результаты у левого и правого выражений разные.

Скорее всего равенство c переходом от деления к умножению должно иметь вид

(a/b)/c= a/(b*c)

/ /123456
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий