Estoy interesado en saber como limitar el número de decimales en un float por que creo que tal y como lo estoy haciendo no es correcto.
A continuación pongo el código:
Código:
Como vereís el método recibe un List de puntuaciones y devuelve la media.public float getAverage (List<Integer> pointsList){ /* patron de formateo de dos decimales */ NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); float total=0; float calc=0; for(Iterator<Integer> iter=pointsList.iterator();iter.hasNext();){ calc = calc + iter.next(); } total = (calc/pointsList.size()); String x = (nf.format(total)); total = Float.parseFloat(x); return total; }
Al ejecutarlo se ve por pantalla que hace una "conversión" del punto decimal a
la coma, no se si eso esta implícito en el uso de Numberformat.
Como el String x recibe una coma en lugar del punto decimal al hacer el
Float.parseFloat(x) me da el error :
Exception in thread "main" java.lang.NumberFormatException: For input string: "8,83"
at sun.misc.FloatingDecimal.readJavaFormatString(Unkn own Source)
at java.lang.Float.parseFloat(Unknown Source)
at Exercici_3.Competition.getAverage(Competition.java:62)
at Exercici_3.Competition.main(Competition.java:29)
Saludos