2012-02-08 27 views
5

Escribí un programa hoy y tengo que mostrar el porcentaje en mi salida, pero si tengo una entrada de .05375 lo necesito para mostrar como 5.375% Pensé que podría hacer eso usando un NumberFormat pero mi pantalla final es simplemente 5%. ¿Hay alguna manera de hacerlo mostrar los decimales? ¿O cómo codificaría esto? El programa funciona correctamente, es solo esa salida que necesita formatearse de manera diferente. A continuación se muestra lo que tengo para mi salida para esa línea de código en este momento.Porcentaje de Java para mostrar decimales

System.out.println("Interest Rate: " + percent.format(InterestRate)); 
+0

uno de los requisitos para el formato es que necesito mostrar 3 decimales. –

+1

posible duplicado de [Cómo formatear un porcentaje fraccional con java.text.MessageFormat] (http://stackoverflow.com/questions/698261/how-do-you-format-a-fractional-percentage-with-java- text-messageformat) – Veger

+0

@Veger No vi esa publicación cuando busqué. ¡Gracias! –

Respuesta

10

Usted puede hacer que el uso de NumberFormat en Java. A continuación se muestra el código de ejemplo:

NumberFormat numberFormat = NumberFormat.getNumberInstance(); 
numberFormat.setMinimumFractionDigits(3); 

System.out.println("Interest Rate: " + numberFormat.format(InterestRate)); 

Un mejor enfoque es utilizar NumberFormat con configuración regional, como a continuación:

NumberFormat numberFormat = NumberFormat.getNumberInstance(someLocale); 
+1

Tuve que cambiarlo a setMaximumFractionDigits (3); debido a otro cálculo, pero funcionó. ¡Gracias! –

+0

Aún necesita multiplicar por 100 en alguna parte. –

+1

@Peter Lawrey ¿Estás seguro Peter? Me funcionó cuando lo codifiqué para obtener la instancia de porcentaje que le indica que muestre un porcentaje (creo que le está diciendo a java que multiplique por 100) y luego establezco los dígitos de fracción máxima que permitieron mi punto decimal. He realizado varias pruebas exitosas pero soy nuevo en esto, así que no estoy 100% con Java. –

0

Uso: String.format(); Consulte la documentación para la especificación de formato.

6

Si se utiliza el formato de %, el número se multiplica por 100 para usted:

new DecimalFormat("%#0.000").format(rate); 
+0

¿No sería eso '0,000' para tres decimales? –

+0

@PeterLawrey sí, lo desnatado :( – Bohemian

+0

Lo tomé de 'Lo necesito para mostrar como 5.375%', pero sé lo que quiere decir.;) –

7

¿Qué tal

System.out.printf("Interest Rate: %.3f%%%n", 100 * InterestRate); 
+1

+1 nice api kung fu – Bohemian

0
double myVal = 0.05375 
System.out.println("Interest Rate: " + (myVal*100) + "%"); 

Esto debería dar 5,375%

¿Es similar a ¿Qué estás buscando?

+0

¿De dónde debería venir el '%'? – Blaisorblade

1

respuesta seleccionada es correcta, pero asegúrese de usar

NumberFormat.getPercentInstance(); 

que ayudará muy bien en el trato con el por ciento. Ninguna de las concatenaciones o formatos de cadenas adicionales necesarios.

Cuestiones relacionadas