Java: Standardabweichung - Array?
Moin. Ich versuche die Standardabweichung von Werten zu erstellen, die im Array "werte" hinterlegt sind:
double std = 0;
for(i=0;i<werte.length;i++)
std += Math.sqrt( 1/(werte.length-1) ) * Math.pow(werte[i] - mittelwert , 2) ;
Allerdings spuckt Java kein Ergebnis raus, sondern nur 0. Kann mir jemand weiterhelfen? Ich komm nicht drauf was ich falsch mache, auch wenn es wahrscheinlich offensichtlich ist. ^^
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Eine Rechenoperation zwischen ints hat auch als Ergebnis ein int, d.h. sie wird ganzzahlig durchgeführt. Das willst du hier wohl nicht.
1/(werte.length-1)
Dieser Ausdruck hat nur int-Operanden, und somit wird da auch immer ein int gleich 0 rauskommen, sobald der Divisor größer 1 ist (also bei werte.length > 1).
Einfache Lösung:
1.0/(werte.length-1)
Siehe https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2