Pregunta

Estoy usando DecimalFormat para crear un formato decimal que es siempre de 6 caracteres de largo.En primer lugar he utilizado el formato de cadena de new DecimalFormat("000.00") pero esto me dio un error para los números negativos.El signo menos se agrega y hace que el número uno de los espacios más grandes, resultando en -005.25 y no -05.25 como se desee.

He sido capaz de solucionar esto con el siguiente código

DecimalFormat fmt;  
if(netAmt < 0){  
    fmt = new DecimalFormat("00.00");  
}else{  
    fmt = new DecimalFormat("000.00");  
}  

System.out.println(fmt.format(netAmt));

Pero DecimalFormat tiene la ; carácter para dar formato a los números negativos de manera diferente, a continuación, los números positivos.No he sido capaz de hacer este trabajo correctamente.Como yo lo entiendo el siguiente código debería funcionar como el anterior.

DecimalFormat fmt = new DecimalFormat("000.00;00.00");  

System.out.println(fmt.format(netAmt));

El resultado es que el patrón antes de la ; se utiliza para ambos positivos y negativos de los números causando la -005.25 error de permanecer.¿Qué estoy haciendo mal?Soy la incomprensión de lo que ; es para?

¿Fue útil?

Solución

¿El siguiente patrón de cadena de ayuda: "%06.2f%n" Un ancho fijo de 6 con "0" relleno de la parte delantera?

ejemplo

System.out.println(String.format("%06.2f%n",1.3));
System.out.println(String.format("%06.2f%n",-3.323));

¿Qué desea el comportamiento cuando el número es mayor de 3 dígitos, es decir, que no caben?

Otros consejos

Estoy bastante seguro de que el segundo patrón es ignorado, y sólo las partes específicas para la negación, por ejemploel signo - o () etc.

Que mi comprensión de la lectura del siguiente pasaje de la JavaDocs

Un DecimalFormat patrón contiene un positivo y negativo de la sub-patrón, por ejemplo, "#,##0.00;(#,##0.00)".Cada patrón tiene un prefijo numérico de una parte, y el sufijo.La negativa patrón es opcional;si no, entonces la positiva patrón prefijado con el localizadas signo menos ("- "en la mayoría de las localizaciones) se utiliza como el negativo de la sub-patrón.Es decir, "0.00" es equivalente a "0.00;-0.00". Si hay un explícito negativo sub-patrón, sólo sirve para especificar la negativa de prefijo y sufijo;el número de dígitos, un mínimo de dígitos, y otras características, son todos de la misma como la positiva patrón.Eso significa que "#,##0.0#;(#)" produce, precisamente, el mismo comportamiento que "#,##0.0#;(#,##0.0#)".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top