Java:Math.pow()返回零

jack_the_beast

我正在尝试计算给定数字集的平均值和方差的平均值。平均值似乎运行良好,但是我无法计算方差,结果始终为0。我很确定我对变量类型有些困惑:

 int numRuns = 5;

    ArrayList<Long> numbersOfIOs = new ArrayList<Long>();
.
.
.

  long averageNumberOfIOs = 0;
  for(Long io : numbersOfIOs){
        averageNumberOfIOs+=io;
  }

  System.out.println("Average number of I/Os: " 
                     + (averageNumberOfIOs/numRuns) 
                     + " I/Os");

long varianceNumberOfIOs = 0;

for(Long io : numbersOfIOs){
     double temp = Math.pow(2.0,(double)(io-averageNumberOfIOs));
     varianceNumberOfIOs+=Math.round(Math.pow(2,(io-averageNumberOfIOs)));
}

System.out.println("Variance: " + (varianceNumberOfIOs/numRuns) + " I/Os\n");

我将temp放置在那里只是出于调试目的,我发现它始终为0。

任何帮助将不胜感激

fajarkoe

您的代码中有两个问题。

第一的。该变量averageNumberOfIOs包含IO的总和,而不是平均值。第二。要计算变量的平方x,请使用Math.pow(x, 2.0),而不要Math.pow(2.0, x)像在代码中那样使用。

解决以上两个问题后,您将获得正确的结果。

您得到0的原因是这样的。由于averageNumberOfIOs包含IO的总和,因此表达式(io-averageNumberOfIOs)是一个负数(可能是很大的负数),而与的值无关io计算Math.pow(2.0, (io-averageNumberOfIOs))意味着您要计算2到大负数的幂,这将产生一个非常接近0的值。将这些总和乘以IO,您仍然会得到0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java对象为计算的变量返回零

来自分类Dev

使用Math.pow()函数

来自分类Dev

Math.pow根据Java版本产生不同的结果

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

Java的Math.pow是否将结果取整?

来自分类Dev

java.math.BigInteger,pow方法仅接受int

来自分类Dev

为什么Java语言的Math.pow()与C语言中的相同,似乎返回一个四舍五入的值?

来自分类Dev

charAt()和Math.pow()

来自分类Dev

Java到Swift-如何在Xcode 6中使用math.pow和math.exp

来自分类Dev

x * x vs Math.pow(x,2)Java性能

来自分类Dev

Java Math.pow(x,2.0)与Math.pow(x,2.0000001)性能

来自分类Dev

为什么math.h有pow()返回double而不是int

来自分类Dev

Java Math.abs与Math.pow

来自分类Dev

x = 0时Java的Math.pow(x,2)的性能不佳

来自分类Dev

如何正确使用math.pow java函数?

来自分类Dev

Java中Math.pow()背后的算法是什么

来自分类Dev

Math.pow的JavaScript实现

来自分类Dev

Java Math.acos()返回值

来自分类Dev

Java的Math.pow返回1错误

来自分类Dev

Java Math未返回正确答案

来自分类Dev

Java Math.random返回0?

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

在math.pow中使用递归来计算Java的功效

来自分类Dev

Math.pow(64,1/3)返回不精确4

来自分类Dev

如何正确使用math.pow java函数?

来自分类Dev

在Java中使用Math.pow确定立方体的表面积以及“跳过”的困难

来自分类Dev

在 Java 中使用 BigDecimal 手动 Math.pow

来自分类Dev

带有 Math.pow 的 Java.Lang.Exception

来自分类Dev

Java,为什么 Math.sqrt() 返回 0