2011-03-24 6 views

Respuesta

24

Todo lo que necesita es:

Math.round(myFloat*4)/4f 

Puesto que un medio es también dos trimestres de este sola ecuación se hará cargo de su medio-redondeo también. No necesita hacer dos ecuaciones diferentes para el redondeo de medio o cuarto.

Código de ejemplo:

public class Main { 
    public static void main(String[] args) { 
     float coeff = 4f; 
     System.out.println(Math.round(1.10*coeff)/coeff); 
     System.out.println(Math.round(1.20*coeff)/coeff); 
     System.out.println(Math.round(1.33*coeff)/coeff); 
     System.out.println(Math.round(1.44*coeff)/coeff); 
     System.out.println(Math.round(1.55*coeff)/coeff); 
     System.out.println(Math.round(1.66*coeff)/coeff); 
     System.out.println(Math.round(1.75*coeff)/coeff); 
     System.out.println(Math.round(1.77*coeff)/coeff); 
     System.out.println(Math.round(1.88*coeff)/coeff); 
     System.out.println(Math.round(1.99*coeff)/coeff); 
    } 
} 

Salida:

1.0 
1.25 
1.25 
1.5 
1.5 
1.75 
1.75 
1.75 
2.0 
2.0 
+0

¿Cómo es resolver ambos? ¿Cómo sabe qué usar? 'Math.round (3.8 * 4)/4f == 3.75' –

+0

@user unk: Porque' la mitad es dos trimestres' y: http://download.oracle.com/javase/1.4.2/docs/api/ java/lang/Math.html # round (float)/ –

+3

Pero 'Math.round (3.8 * 2)/2f == 4.0', no' 3.75'. –

1

Matemáticamente hablando, se podría multiplicar su flotador 0,25, alrededor de ella, y luego dividirse de nuevo por 0,25.

EDIT: Perdón, parece que entendí mal lo que quería decir por trimestre. Sin embargo, hasta donde yo sé, esta es la forma más simple de redondear a varios decimales y grados.

+0

Creo que te refieres a "multiplicar por 4". – DJClayworth

5

(Math.round(num/toNearest))*toNearest;

redondeará a un número toNearest

Cuestiones relacionadas