Объем сферы

Проще говоря: break прекратит текущий цикл и продолжит выполнение в первой строке после окончания цикла. continue переходит в состояние цикла и продолжает выполнение цикла.

0
задан iggylombardi 17 January 2019 в 05:01
поделиться

2 ответа

Выражение sphereRadius * 3 означает трехкратный радиус сферы. Если вместо этого вы хотите взять третью степень сферы, то используйте Math#pow:

sphereVolume = (4.0 / 3.0) * piVal * Math.pow(sphereRadius, 3.0d);

Обратите внимание, что Math.pow технически ожидает двух двойных, поэтому в идеале радиус сферы также должен быть удвоенным , хотя вышеупомянутое также работало бы из-за приведения типов.

0
ответ дан Tim Biegeleisen 17 January 2019 в 05:01
поделиться

Вам нужно куб радиус, а не умножить его на 3. Оператор "*" умножает. Обратите внимание, как он используется для объединения элементов "(4/3)" и "piVal", чьи ссылки в исходной формуле, которую мы пытаемся реализовать, объединяются с использованием умножения (здесь записывается просто как сопоставление, что не очень хорошая запись для компьютерного анализа). В Java нет первоклассного оператора возведения в степень, поэтому вместо этого мощность расширяется до самосумножения с тремя копиями возведенного в степень количества. На самом деле, если "*" возведено в степень, то запрограммированное выражение будет резко, совершенно неверно, возможно, даже ужасно переполнено даже на небольших входах, в зависимости от того, как была установлена ​​связь операции.

Использование «*» для представления умножения является обычным языком в средах ввода, где эти более эффективные или изящные нотации недоступны или могут вводить в заблуждение, например, в простых текстовых сообщениях и в текстовых файлах исходного кода компьютера, таких как исходные файлы Java. Иногда используется также похожая нотация, символ «x», однако возникает проблема, заключающаяся в том, что это буквально буква x, а не отдельный символ, и, следовательно, она неоднозначна с очень часто используемым именем переменной и, таким образом, во многих случаях не годится как символ операции на языке программирования.

Более того, следуя этому, можно было бы подумать, что оператор «^», аналогично используемый в такой записи (как здесь, к сожалению, в переполнении стека отсутствует надлежащая система набора математики на основе LaTeX или подобного, хотя я не помню причин, почему вы, вероятно, можете найти его в Meta), но это действительно относится к битовому XOR в Java. @Tim Biegeleisen предлагает вам использовать Math.pow, однако я думаю, что это может быть менее эффективным с точки зрения скорости, чем два умножения, объединяющие три копии базы. Тем не менее, это не имеет значения в этом приложении, но это может быть в других, и, следовательно, почему вместо этого показана длинная форма. Math.pow действительно избыточен: это реализация того, что в математических терминах можно назвать аналитической функцией возведения в степень , которая представляет собой трансцендентную функцию и обычно реализуется с использованием степенных рядов или другого такого довольно вычислительно-интенсивного процесса. и включает в себя как трансцендентную экспоненциальную, так и логарифмическую операцию, в отличие от всего лишь трех инструкций умножения ЦП, и именно к этому приведенному коду может быть скомпилирован JIT.

0
ответ дан The_Sympathizer 17 January 2019 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: