Kur*_*urt 2 java math double android pi
我正在尝试制作一系列代码,根据用户输入的高度和半径计算锥体的体积(见下文).
我的问题是答案出错了(但不是很长).使用height = 5,radius = 10的例子,我从500的代码中得到答案(将pi视为3),但是手动计算得到~523.
我假设它与我声明pi的变量类型有关(双重然后转换为long)但我努力使变量类型的任何其他组合起作用.
以下正确的版本是什么,将正确存储pi(至少5或6分钟)?
double piDouble = Math.PI;
long height = Long.parseLong(heightString);
long pi = (new Double(piDouble)).longValue();
long radius = Long.parseLong(radiusString);
long volumeBase = (pi*(radius*radius)*height) / 3;
Run Code Online (Sandbox Code Playgroud)
long pi = (new Double(piDouble)).longValue();是一个很长的,所以它完全等于3.
如果您需要更高的精度,请一直使用double,最后只使用round.这应该会给你你期望的结果:
double piDouble = Math.PI;
long height = Long.parseLong(heightString);
long radius = Long.parseLong(radiusString);
double volumeBase = (piDouble * (radius * radius) * height) / 3;
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以对结果进行舍入:
long roundedDownVolume = (long) volumeBase; //round down
long roundedVolume = Math.round(volumeBase); //or round to the closest long
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |