2011-04-07 35 views
7

¿Existe una forma simple en Java de formatear un decimal, flotante, doble, etc. para imprimir SOLAMENTE la porción decimal del número? No necesito la parte entera, incluso/especialmente si es cero. Actualmente estoy usando el método String.indexOf (".") Combinado con el método String.substring() para seleccionar la parte del número en el lado derecho del decimal. ¿Hay una manera más limpia de hacer esto? No se pudo encontrar nada en la clase DecimalFormat o en el método printf. Ambos siempre devuelven un cero antes del lugar decimal.Java: formatee el número para imprimir la parte decimal solamente

+0

¿Quieres mostrar el punto decimal ? –

+0

Sí, quiero mostrar el punto decimal – Fred

Respuesta

7

Puede eliminar la parte entera del valor al convertir el doble en un largo. A continuación, puede restar esto desde el valor original a quedar sólo con el valor fraccionario:

double val = 3.5; 
long intPartVal= (long) val; 
double fracPartVal = val - intPartVal; 
System.out.println(fracPartVal); 

Y si usted quiere deshacerse del cero se puede hacer esto:

System.out.println(("" + fracPartVal).substring(1)); 
+0

Creo que todavía se imprimirá el cero inicial. Lo necesito para imprimir: .5, no 0.5. – Fred

+0

+1 esto es nuevo para mí. aquí hay otro [ejemplo] (http://www.java2s.com/Code/Java/Language-Basics/Obtainingtheintegerandfractionalparts.htm). – mre

+2

añadido en el camino para eliminar el cero inicial, pero creo que era más o menos lo que ya estaba haciendo. Sin embargo, restar eliminar la parte entera del número debería ser una solución más atractiva, creo. – jberg

5

Dividir por 1 y obtenga el resto para obtener la porción decimal (usando "%"). Utilice DecimalFormat a consecuencia de formato (usando "#" símbolo para suprimir 0s principales):

double d1 = 67.22; 
double d2 = d1%1; 
DecimalFormat df = new DecimalFormat("#.00"); 
System.out.println(df.format(d2)); 

Esto imprime 0,22

+0

Sí, eso lo hizo. – Fred

0

Esto imprimirá 0,3

double x = 23.8; 
int y =(int)x; 
float z= (float) (x % y); 
System.out.println(z); 
+0

Esto funcionará, pero es innecesariamente complicado. Basta con tomar el módulo 1 restante, o restar la parte entera entera. – poolie

Cuestiones relacionadas