gpt4 book ai didi

java - Android Studio : getStandardDeviation() Method from org. apache.commons.math4.stat.descriptive 没有给我 Std 的确切值

转载 作者:行者123 更新时间:2023-12-01 16:38:37 24 4
gpt4 key购买 nike

我想知道是否有人可以帮助我。我正在开发一个程序,从双值列表中提取平均值和标准差。我使用 org.apache.commons.math4.stat.descriptive 来执行此操作,该库有一个名为 GetStandardDeviation() 的方法,它为您提供列表的标准差,但是当我手动计算此标准差时,我没有得到与方法返回给我的相同的值。这是我的代码:

public class PDC extends AppCompatActivity {

private DescriptiveStatistics stats = new DescriptiveStatistics();

private double media;
private double dvt;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pdc);

double K = 0.00;

Bundle extras;

extras = getIntent().getExtras();
assert extras != null;

String nombrelista = extras.getString("nombrelista");
ArrayList<String> listDatos = extras.getStringArrayList("listDatos");

assert listDatos != null;

if(listDatos.size()==9){ K = 1.92;}
if(listDatos.size()==10){K = 1.96;}
if(listDatos.size()==11){K = 2.00;}
if(listDatos.size()==12){K = 2.04;}
if(listDatos.size()==13){K = 2.07;}
if(listDatos.size()==14){K = 2.10;}

//This for parses to double the positions from listdatos Arraylist and put it in the DescriptiveStatistics type variable called "stats"

for (int i = 0; i < listDatos.size(); i++) {
stats.addValue(Double.parseDouble(listDatos.get(i)));
}

// so now, when i have my arraylist saved in "stats" i call getStandardDeviation

media = stats.getMean();
dvt = stats.getStandardDeviation();

int numeroMed = listDatos.size();

double imin = media - (K * dvt);
double imax = media + (K * dvt);

//then i pass all the values to another activity where it shows up in a TextView Field

Intent A = new Intent(this, Resultados.class);
A.putExtra("nombreLista", nombrelista);
A.putExtra("NumeroMedidas", numeroMed);
A.putStringArrayListExtra("listDatos", listDatos);
A.putExtra("Media", media);
A.putExtra("dvt", dvt);
A.putExtra("Imin", imin);
A.putExtra("Imax", imax);
A.putExtra("K",K);
startActivity(A);
}
}

我不确定为什么它不起作用。也许当我进行 Activity 时我会丢失一些信息,因为这些值通常是非常长的数字。

如果我不使用这个库并设计自己的可以计算标准差的方法会更好吗?

此外,如果您在我的代码中发现有需要改进的地方,请告诉我,我真的很感激,因为我对此还很陌生。非常感谢!

最佳答案

这是Java中的精度损失。

可以使用strictfp修改onCreate方法,或者将double改为BigDecimal即可解决此问题

关于java - Android Studio : getStandardDeviation() Method from org. apache.commons.math4.stat.descriptive 没有给我 Std 的确切值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61908862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com