Теория о не реальности существования грааля ;)

 

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

MathRound(percentage/margin/step)*step;
 

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

так:

(percentage/margin)/step

или так:

percentage/(margin/step)
 
percentage/margin/step=(percentage/margin)/step

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

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

 
sanyooooook:

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

так:

или так:


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

Т.е. так:

percentage / margin / step == ( percentage / margin ) / step
 
sanyooooook:

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

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

какое продуманное действие, а если формулу писал не ты?
 
PapaYozh:


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

Т.е. так:


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

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

 
С точки зрения математики не важно, где будут стоять скобки. Можно без них. Но в реальности расположение скобок в равноприоритетных действиях может сильно сказаться на результате.
 
Zhunko:
С точки зрения математики не важно, где будут стоять скобки. Можно без них. Но в реальности раположение скобок в равноприоритетных действиях может сильно сказаться на результате.

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

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

 
sanyooooook:

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

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

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

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

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

 

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


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

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

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

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