2009-11-23 37 views
18

Me gustaría redondear enteros a su 1000 más cercano en Java.Cómo redondear * abajo * enteros en Java?

Así, por ejemplo:

  • 13.623 rondas a 13.000
  • 18.999 rondas a 18.000
  • etc
+7

¿Quiere decir redondear hacia abajo o redondear a cero? Hay una diferencia cuando los números pueden ser negativos. –

+0

en realidad quiero decir redondear hacia abajo, así que tengo que lidiar con miles, es decir, 43,844 redondeos a 43,000 (no a 44,000) – Redandwhite

Respuesta

48

Basta con dividir por 1000 para bajar de los dígitos que no son interesantes para usted, y multiplique por 1000:

i = i/1000 * 1000 

O, también puede probar:

i = i - (i % 1000) 
+1

+1: Nunca pensé usar el módulo de esta manera. Además, puede acortar la línea ligeramente haciendo 'i - = i% 1000' (no sé si se requieren paréntesis alrededor del lado derecho o no) – Powerlord

+0

¿De verdad? Siempre pensé en el módulo como una forma de obtener las unidades de un número ('i% 10') etc. En cuanto a la versión abreviada, eso es probablemente lo que haría en mi código, pero quería que fuera claro aquí. – abyx

+4

Esto redondea hacia cero. – starblue

11

Se puede dividir por el número 1000, aplicar Math.floor, se multiplica por 1000 y lanzado de nuevo a número entero.

Cuestiones relacionadas