Foros del Web » Programación para mayores de 30 ;) » Java »

BigDecimal Duda

Estas en el tema de BigDecimal Duda en el foro de Java en Foros del Web. Hola foreros !!! Llevo un rato dando vueltas por internet y no encuentro la diferencia entre: ROUND_HALF_DOWN y ROUND_HALF_UP @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original ...
  #1 (permalink)  
Antiguo 26/06/2013, 10:30
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
BigDecimal Duda

Hola foreros !!!

Llevo un rato dando vueltas por internet y no encuentro la diferencia entre:
ROUND_HALF_DOWN y ROUND_HALF_UP

Código Java:
Ver original
  1. public static void main(String args[])
  2.   {
  3.       BigDecimal num_1 = new BigDecimal(5.92929292);
  4.       BigDecimal num_2 = new BigDecimal(9333.0000);
  5.       BigDecimal num_3 = new BigDecimal(5.99);
  6.      
  7.       System.out.println("num_1 = " + num_1 + " : " + num_1.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  8.       System.out.println("num_2 = " + num_2 + " : " + num_2.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  9.       System.out.println("num_3 = " + num_3 + " : " + num_3.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  10.      
  11.       System.out.println("---------------------------------------------------------------------------------");
  12.      
  13.       System.out.println("num_1 = " + num_1 + " : " + num_1.setScale(2, BigDecimal.ROUND_HALF_UP));
  14.       System.out.println("num_2 = " + num_2 + " : " + num_2.setScale(2, BigDecimal.ROUND_HALF_UP));
  15.       System.out.println("num_3 = " + num_3 + " : " + num_3.setScale(2, BigDecimal.ROUND_HALF_UP));
  16.      
  17.   }

OUTPUT:

num_1 = 5.929292919999999966762516123708337545394897460937 5 : 5.93
num_2 = 9333 : 9333.00
num_3 = 5.990000000000000213162820728030055761337280273437 5 : 5.99
---------------------------------------------------------------------------------
num_1 = 5.929292919999999966762516123708337545394897460937 5 : 5.93
num_2 = 9333 : 9333.00
num_3 = 5.990000000000000213162820728030055761337280273437 5 : 5.99


¿Alguien me lo podría explicar, por favor?

Muchas gracias por vuestro tiempo.

Un saludo.
  #2 (permalink)  
Antiguo 26/06/2013, 11:28
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: BigDecimal Duda

Tal vez lo veas mejor con otras cifras.

HALF_UP si es mayor o igual a 5 entonces redondea hacia abajo. HALF_DOWN si es menor o igual a 5 redondea hacia abajo.

Ejemplo sin codigo:
Código:
1.4 -> HALF UP   -> 1
1.4 -> HALF DOWN -> 1

1.5 -> HALF UP   -> 2
1.5 -> HALF DOWN -> 1

1.6 -> HALF UP   -> 2
1.6 -> HALF DOWN -> 2
Código Java:
Ver original
  1. import java.math.BigDecimal;
  2.  
  3. public class Main {
  4.     public static void main(String args[])
  5.     {
  6.         BigDecimal num_1 = new BigDecimal("5.555");
  7.         BigDecimal num_2 = new BigDecimal("5.556");
  8.         BigDecimal num_3 = new BigDecimal("5.554");
  9.  
  10.         System.out.println("num_1 = " + num_1 + " : " + num_1.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  11.         System.out.println("num_2 = " + num_2 + " : " + num_2.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  12.         System.out.println("num_3 = " + num_3 + " : " + num_3.setScale(2, BigDecimal.ROUND_HALF_DOWN));
  13.  
  14.         System.out.println("---------------------------------------------------------------------------------");
  15.  
  16.         System.out.println("num_1 = " + num_1 + " : " + num_1.setScale(2, BigDecimal.ROUND_HALF_UP));
  17.         System.out.println("num_2 = " + num_2 + " : " + num_2.setScale(2, BigDecimal.ROUND_HALF_UP));
  18.         System.out.println("num_3 = " + num_3 + " : " + num_3.setScale(2, BigDecimal.ROUND_HALF_UP));
  19.     }
  20. }

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.