2009-01-28 12 views
5

En Java, ¿cómo redondeo a un valor arbitrario? En concreto, quiero redondear a .0025 pasos, es decir:Java: valores redondos a arbitrarios

0,032611 -> 0,0325

0.034143 -> 0,0350

0.035233 -> 0,0350

0.037777 -> 0,0375

...

¿Alguna idea o libs?

Respuesta

19
y = Math.round(x/0.0025) * 0.0025 
+0

me votaron, pero supongo que esta fórmula no maneja el segundo caso, en el que el varas redondas es hacia arriba y no hacia abajo. –

+1

Gracias por el aviso. Lo cambié a Math.round(). –

+0

Funciona muy bien. Gracias. – kenoa

2

Usted puede hacer esto:

double step = 0.0025; 
double rounded = ((int)(unrounded/step + 0.5)) * step; 
+0

Creo que en java está llegando al mismo problema que en C++: fundir en int truncará los valores dobles grandes en los más pequeños. 1e300, por ejemplo, se convertirá en algo alrededor de 2e9. considere usar ceil/piso para evitar el mismo desorden que tuve hoy al responder una pregunta similar :) –

+0

Ah sí, ahora lo entiendo, ¡muchas gracias! –

Cuestiones relacionadas