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

Problema al leer un decimal separado por coma

Estas en el tema de Problema al leer un decimal separado por coma en el foro de Java en Foros del Web. Hola, En primer lugar decir que no tengo muchos conocimientos de programación. He hecho un programa con netbeans que lee un fichero .csv y muestra ...
  #1 (permalink)  
Antiguo 27/02/2012, 05:40
 
Fecha de Ingreso: enero-2012
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Problema al leer un decimal separado por coma

Hola,

En primer lugar decir que no tengo muchos conocimientos de programación. He hecho un programa con netbeans que lee un fichero .csv y muestra los datos leidos con graficas etc.
El problema me ha surgido cuando he tenido que leer un numero decimal que está separado por una coma. Creo que el problema es ese, porque he probado a cambiar el fichero .csv (en opciones-->...) para que utilice como separador decimal "." en vez de "," y funciona.

La pregunta es, ¿hay alguna forma de leer ese numero sin cambiar el fichero .csv?

También he probado a cambiar la casilla de "encoding" dentro de las propiedades del programa pero nada. Le puse la ISO... en vez de la UTF-8 para ver si así lo solucionaba pero nada...

Gracias de antemano, a ver si alguno me puede echar un cable.
  #2 (permalink)  
Antiguo 27/02/2012, 10:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 9 meses
Puntos: 78
Respuesta: Problema al leer un decimal separado por coma

Cuando recoges ese valor lo haces como String o Double?

Un saludo.
  #3 (permalink)  
Antiguo 27/02/2012, 13:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Problema al leer un decimal separado por coma

Hola:

No sé cómo lees el fichero, pero si utilizas algo como Double.parseDouble("12.34"), Float.parseFloat("12.34"), no te queda más remedio que ser . el separador de decimales.

Sin embargo, si usas DecimalFormat, entonces prevalecen los separadores de tu idioma por defecto (coma para los decimales, puntos para los separadores de 1000). Por ejemplo, esto

DecimalFormat df = new DecimalFormat("#,###.#");
System.out.println(df.parse("112.434,232"));
System.out.println(df.parse("112434,232"));

te funciona bien en ambos casos.

OJO, en el patrón "#,###.#" un punto es el separador de decimales independienteme de cual sea el separador en tu idioma (una coma para español) y la coma , es el separador de miles, independientemente de cual sea en tu idioma (punto en español. Por eso, aparentemente, está al revés el patrón con los números, pero así está bien.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 28/02/2012, 01:47
 
Fecha de Ingreso: enero-2012
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Problema al leer un decimal separado por coma

Hola,

Lo que hago con el programa es leer varias celdas de un fichero .csv. Algunas celdas son numeros enteros y otras son decimales.
Para las que son decimales utilizo lo siguiente:
Double Junta=Double.parseDouble(reader.get("% Malas por Junta"));
El problema es que las celdas están en formato (7,09876) en vez de (7.09876) y eso no me lo reconoce.

He probado con decimalFormat pero nada; con un número cualquiera funciona, pero con una variable tipo double me da error.

Me pregunto si habrá alguna solución cambiando las opciones del Netbeans, ya que lo tengo en ingles y a lo mejor el problema podría estar ahí.

Saludos.
  #5 (permalink)  
Antiguo 28/02/2012, 02:10
 
Fecha de Ingreso: enero-2012
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Problema al leer un decimal separado por coma

Creo que el problema puede ser que estoy intentando transformar un dato de tipo String en un numerico, pero dicho dato no es un numero para Java.

El error que me sale es el siguiente:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "5,95238095238095"

El metodo parseDouble me lanza una excepción de tipo NumberFormatException.
  #6 (permalink)  
Antiguo 28/02/2012, 02:30
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Problema al leer un decimal separado por coma

Hola:

Como te he comentado, parseDouble() te fallará siempre, el punto decimal es un punto y es independiente de tu lenguaje. Debes usar DecimalFormat. Si DecimalFormat no te va, posiblemente estás haciendo algo mal. ¿Puedes poner el código que usas para DecimalFormat y cómo lees ese número del fichero?.

Otra opción es leer el número como String (ya debes estar haciendolo) y usar el método replace de String para cambiar las , por . y luego usar parseDouble().

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 28/02/2012, 02:34
 
Fecha de Ingreso: enero-2012
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Problema al leer un decimal separado por coma

Gracias por todo,

Al final ya lo he solucionado de la siguiente manera:
String Junta=reader.get("% Malas por Junta");
Junta = Junta.replace(',', '.');
double junta=Double.parseDouble(Junta);

De esta manera me devuelve el numero 3,456789 de la forma 3.456789. PROBLEMA RESUELTO.

MUCHAS GRACIAS!

Etiquetas: coma, decimal, netbeans, programa, separado
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:11.