2015-05-04 3 views
1

System.out.print (3 + 2 + 1-5 + 4% 2-1/4 + 6)(начальный) Java-математическая последовательность

Выход: 7

Как последовательность выполнения математические операторы работают, делает ли java алгебраическим PEMDAS или чем-то еще.

+0

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html Для изучения приоритета оператора –

ответ

3

Да, Java следует стандартным арифметическим порядкам операций.

Однако вы можете ожидать другого ответа, чем того, что у вас есть. Это связано с тем, что значение 1/4 оценивается с использованием целых чисел, так как и 1, и 4 являются целыми числами. Результат 1/4 в целочисленной арифметике равен 0.

Чтобы попросить компилятор оценить это с помощью плавающей запятой, используйте что-то вроде 1.0/4.0. После этого вы должны получить результат с плавающей точкой 6.75 (что, вероятно, вы ожидали).

+0

Исправить. Вот как он будет выполнен (3 + 2 + 1-5 + (4% 2) - (1/4) +6). Как объяснено, 1/4 будет оценено до 0, так как по крайней мере один из них должен быть числом с плавающей запятой. Кроме того, если вы сохраняете значение в переменной, переменная должна также быть плавающей или двойной, иначе вы потеряете что-нибудь после десятичной точки. Что-то вроде: (float x = (3 + 2 + 1-5 + (4% 2) - (1.0f/4) +6)) – Anshuman

2

Java будет следовать порядку старшинства (порядок действий)

() первый

*, /,% второй

+, - третий

То есть все, что вы» Мне нужна эта проблема, но есть еще Here

0

Да, Java будет следовать одному и тому же порядку операций. Единственное изменение - это%, которые следуют тому же порядку, что и умножение и деление.