首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >球体体积

球体体积
EN

Stack Overflow用户
提问于 2019-01-17 05:01:45
回答 3查看 1.9K关注 0票数 0

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

谢谢你的帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
   }
}
EN

回答 3

Stack Overflow用户

发布于 2019-01-17 05:03:42

表达式sphereRadius * 3表示球体半径的三倍。如果您想取球体的三次幂,则使用Math#pow

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sphereVolume = (4.0 / 3.0) * piVal * Math.pow(sphereRadius, 3.0d);

请注意,Math.pow在技术上需要两个双精度,所以理想情况下球体半径也应该是双精度的,尽管由于类型转换,上面的方法也可以工作。

票数 4
EN

Stack Overflow用户

发布于 2019-01-17 05:29:03

你需要将半径平方,而不是乘以3。"*“运算符是乘法。注意它是如何用来连接元素"(4 / 3)“和"piVal”的,在我们试图实现的原始公式中,它们的引用是使用乘法组合的(这里简单地写成并列,这对于计算机解析来说不是一个很好的符号)。Java中没有第一类求幂运算符,因此它的能力被扩展为具有三个求幂数量副本的自乘。事实上,如果"*“求幂,那么编程的表达式将严重错误,甚至可能在很小的输入上溢出,这取决于操作的关联是如何设置的。

在打字环境中,使用"*“表示乘法是一种常见的说法,在这种环境中,更有效或更优雅的符号是不可用或可能令人困惑的,例如在简单的文本消息和像Java源文件这样的纯文本计算机源代码文件中。有时也会使用类似的符号,"x“符号,然而这有一个问题,即它是字面上的字母x,而不是单独的符号,因此对于变量的非常常用的名称是不明确的,因此在许多情况下不适合作为编程语言操作符号。

此外,在这之后,人们可能会认为"^“运算符在这种编写中的用法类似(很遗憾,Stack Overflow缺少一个基于LaTeX或类似的数学排版系统,尽管我记不清原因了;您可能可以在Meta上查找),但这实际上是指Java中的位XOR。@Tim Biegeleisen建议你可以使用Math.pow,但是我认为这在速度方面可能比两次乘法结合三个基数的副本效率低。也就是说,这在这个应用程序中无关紧要,但在其他应用程序中可能会有问题,因此为什么会显示手写形式。Math.pow实际上是夸大其词:它是数学术语中所谓的解析幂函数的实现,解析幂函数是一个超越函数,通常使用幂级数或其他类似的计算密集型过程实现,涉及超越指数和对数运算,而不是只有三条CPU乘法指令,这是给出的代码可能会编译成的结果。

票数 0
EN

Stack Overflow用户

发布于 2021-01-06 20:32:08

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54229316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文