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

numeros con decimales

Estas en el tema de numeros con decimales en el foro de Java en Foros del Web. pq no me sale bien? Código PHP: double decimal  =  0 ; decimal  = ( 9 / 28 ); out . println ( decimal );  bueno lo ...
  #1 (permalink)  
Antiguo 09/02/2005, 14:51
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
numeros con decimales

pq no me sale bien?
Código PHP:

double decimal 
0;

decimal = (9/28);
out.println(decimal); 
bueno lo puesto anterior me retorna cero!! y nose pq
no se supone q deberia retornarme 0.3214...?
por favor no entiendo pq pasan estas cosas!
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #2 (permalink)  
Antiguo 09/02/2005, 15:13
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
juaz!! postee y encontre la solucion!!!

Código PHP:
double decimal 0

decimal = (double) 9/28
out.println(decimal); 
nose si es lo correcto pero funciono.. ahora lo que estoy tratando es de crear una funcion donde mande el numero y la cantidad de decimales para que me muestre
ejemplo
formatear(decimal,2)

si alguien sabe de esto o existe un formatnumber le agradeceria!

Saludos
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #3 (permalink)  
Antiguo 10/02/2005, 02:25
 
Fecha de Ingreso: enero-2005
Mensajes: 139
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola bhonox,

Aunque a mi juicio es un mecanismo un poco enrevesado, sí existe en java una clase para realizar formateos de números.

Esta clase se llama NumberFormat y se encuentra dentro del paquete java.text.

Te pongo un ejemplo rápido....

Código PHP:
import java.text.*;    // Para NumberFormat
.....
.....
public 
String getFormattedNumber(Double p_number) {
   
NumberFormat l_nf NumberFormat.getInstance();
   
String  l_rVal// Valor de retorno de la función.

   
l_nf.setMaximumFractionDigits(2);  // 2 decimales como mucho y como poco
   
l_nf.setMinimumFractionDigits(2);

   
l_rVal = new String l_nf.format(p_number.doubleValue()));

   return 
l_rVal;

Espero que esta ayuda te sirva para algo. La clase FormatNumber es gigantesca, por lo que te recomiendo que busques mas opciones en la documentación de Sun.

Saludos.
  #4 (permalink)  
Antiguo 10/02/2005, 09:42
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
Sabes yo ocupo esta clase para formatear

Código PHP:
package General;

import java.util.*;
import java.text.*;

public class 
FormatoNumeros
{
    private 
int         valor=0;
    private 
double         valor_dec=0;
        
    public 
void setNumero(int i)
    {
        
this.valor i;
    }

    public 
void setNumeroDec(double j)
    {
        
this.valor_dec j;
    }
    
    public 
String getNumero()
    {
        
String s "###,###,###,###";
        
DecimalFormat decimalFormat = new DecimalFormat(s);
        
String s1 decimalFormat.format(valor);
        return 
s1;
    }

    public 
String getNumeroDec()
    {
                
//se trabaja con dos decimales.
        
String s "###,###,###.##";
        
DecimalFormat decimalFormat = new DecimalFormat(s);
        
String s1 decimalFormat.format(valor_dec);
        return 
s1;
    }    
    
    

y al utilizarla hago lo siguiente
Código PHP:
FormatoNumeros cargaNumero = new FormatoNumeros();
cargaNumero.setNumeroDec(ventas_double);
out.println (cargaNumero.getNumeroDec()); 
ahora si yo coloco
double ventas_double = 0;

el retorno es 0
pero si coloco
double ventas_double = 1227.21;
retorna 1,227.21

ahora lo que quiero saber es pq cuando es cero o entero no me retorna decimal es decir si es cero que me retorne 0.00?
Saludos
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #5 (permalink)  
Antiguo 11/02/2005, 10:50
 
Fecha de Ingreso: enero-2005
Mensajes: 139
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola,

Yo creo que eso es porque hay que especificar de forma explícita el número de decimales que quieres poner.

Yo eso lo hago con las funciones que te ponía en el ejemplo.

setMaximumFractionDigits(2);
setMinimumFractionDigits(2);

A ver si esa es la solución...

Saludos.
  #6 (permalink)  
Antiguo 18/11/2006, 15:37
Avatar de RafoRaY  
Fecha de Ingreso: diciembre-2005
Mensajes: 42
Antigüedad: 18 años, 4 meses
Puntos: 0
Q tal Muchachos

Al igual que Ustedes, yo tbm utilizo el Decimalformat algo asi:

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2); //Le estoy diciendo q los decimales sea solo 2

//Para utilizarlo uso lo siguiente
ejemplo:
double n = (65/9);
//Para que me inprima en la consola
System.out.println("n = "+df.format(n));
//Resultado
n = 7,22

Ahora, mi consulta es la siguiente, haber si me dan alguna idea !!!
Como puedo hacer para que, en lugar de la ",", me salga un ".", Es decir, que mi resultado sea:
n = 7.22

ESPERO SU PRONTA RESPUESTA !!!
  #7 (permalink)  
Antiguo 25/01/2007, 03:58
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: numeros con decimales

En cuanto al problema original (que sólo devuelva la parte entera), eso se debe a la forma en que Java trata las operaciones entre 2 tipos idénticos. Si escribes literalmente 2 enteros, el resultado siempre será un entero, no un decimal.

Para solucionarlo basta con que, como se ha escrito, uno sea forzado a formato decimal (un "casting" sencillo con "(double) numero").

Si ya se desea escoger el número de decimales a mostrar, se hace como los demás han indicado más arriba.
  #8 (permalink)  
Antiguo 25/01/2007, 04:01
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: numeros con decimales

RafoRay: Usa el método "setDecimalSeparator ()" de la clase DecimalFormatSymbols. Algo así te podría servir:

// Establece la configuración del formateador de números decimales.
DecimalFormatSymbols dformater_rules = new DecimalFormatSymbols ();
dformater_rules.setDecimalSeparator (',');
DecimalFormat dformater = new DecimalFormat ("0.00", dformater_rules);
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 02:13.