球体体积

时间:2019-01-17 05:01:45

标签: java

嘿,我很好奇这里的计算。球体方程的体积为球体体积=(4.0 / 3.0)πr^ 3。谁能解释为什么对于方程式,我不能只放sphereRadius * 3而不是连续写3次sphereRadius?我希望这个问题清楚。

感谢您的帮助。

import java.util.Scanner;
public class SphereVolumeCalculator {
public static void main (String [] args) {
  Scanner scnr = new Scanner(System.in);
  double piVal = 3.14159;
  double sphereVolume;
  double sphereRadius;

  sphereRadius = scnr.nextInt();

  sphereVolume = (4.0 / 3.0) * piVal * (sphereRadius * sphereRadius * 
  sphereRadius);

  System.out.println(sphereVolume);
   }
}

3 个答案:

答案 0 :(得分:4)

表达式sphereRadius * 3表示球体半径的三倍。如果相反,您想获得球的三次方,则使用Math#pow

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

请注意,Math.pow从技术上讲希望是两个双精度数,因此理想情况下,球体半径也应该是一个双精度数,尽管由于类型转换,上述方法同样适用。

答案 1 :(得分:0)

您需要 cube 半径,而不是乘以3。“ *”运算符相乘。请注意,它是如何用于连接元素“(4/3)”和“ piVal”的,它们在我们要实现的原始公式中的引用对象是通过乘法来组合的(简单地写为并列,这不是很明显计算机解析的好记号)。 Java中没有一流的幂运算符,因此,幂被扩展为具有三份幂的副本的自乘法。实际上,如果对“ *”取幂,则编程的表达式将是非常严重的错误,甚至取决于操作关联的设置方式,即使是很小的输入也可能会严重溢出。

在无法使用更高效或更简洁的符号或可能造成混淆的键入环境中,例如在简单的文本消息和纯文本计算机源代码文件(例如Java源文件)中,使用“ *”表示乘法是常见的说法。有时也使用类似的符号“ x”,但这存在一个问题,即它实际上是字母x,而不是单独的符号,因此与变量的非常常用名称不明确,因此在许多情况下,它不适合用作编程语言的操作符号。

此外,在此之后,人们可能会倾向于认为“ ^”运算符在本文中也类似使用(如此处所示,很遗憾,Stack Overflow缺乏适当的基于LaTeX或基于相似的数学排版系统,尽管我不记得为什么的原因;您可能可以在Meta上查找它,但这实际上是指Java中的按位XOR。 @Tim Biegeleisen建议您可以使用Math.pow,但是我认为这可能比结合三个基数的两次乘法效率低。就是说,在此应用程序中无关紧要,但是在其他应用程序中则可能无关紧要,因此为什么要显示长手形式。 Math.pow实际上是过高的:它是数学上称为 analytic 幂函数的实现,该函数是一种超越函数,通常使用幂级数或其他此类计算密集型函数来实现这个过程涉及超验的指数和对数运算,而不仅仅是三个CPU乘法指令,这是给定的代码很可能将JIT编译成的代码。

答案 2 :(得分:0)

import java.util.Scanner;
public class SphereVolumeCalculator {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      double piVal = 3.14159;
      double sphereVolume;
      double sphereRadius;

      sphereRadius = scnr.nextDouble();

      sphereVolume = (4.0 / 3.0) * piVal * (sphereRadius * sphereRadius * sphereRadius); 
      

      System.out.println(sphereVolume);
   }
}