2010-07-09 11 views
9

Sé cómo hacer una cantidad X de ceros a la izquierda, y sé cómo hacer una X cantidad de decimales. Pero, ¿cómo los hago a los dos?printf cómo hacer que los puntos flotantes con ceros a la izquierda

Estoy buscando tener 4 ceros a una precisión decimal de 2: 0000.00. Por lo tanto 43,4 habría 0043,40

+1

Por favor, no etiquetar un '' printf'-pregunta 'C++. –

+3

@ Space_C0wb0y: no hay nada de malo con el uso de printf en C++. En un mundo ideal, todos usarían iostreams en su C++, pero no vivimos en un mundo ideal. Además, a veces es más fácil obtener una cadena formateada de la manera que uno quiera con printf. – George

+0

En mi opinión, hay mucho error con el uso de 'printf' en C++. C y C++ son dos idiomas completamente diferentes, y las personas hacen suposiciones diferentes sobre qué características de C son correctas en C++ y cuáles no. Diferentes suposiciones siempre conducen a problemas. –

Respuesta

17

probar este formato de cadena printf (C, Perl, PHP):

"%07.2f" 
+0

Java también tiene un printf ... (System.out.printf()) – st0le

+0

@ st0le: Lo mismo ocurre con Python (a través del operador '%') pero no contribuí con la lista de idiomas. Siéntase libre de editar más la respuesta. –

+1

Merece la pena mencionar que el primer número (7) significa la longitud total que incluye la parte entera, la parte fraccionaria y el punto FP mismo (y el signo "menos" opcional también). – Konstantin

-1

Java: utilizar la clase Formatter. Ejemplos de uso esperado:

StringBuilder sb = new StringBuilder(); 
// Send all output to the Appendable object sb 
Formatter formatter = new Formatter(sb, Locale.US); 

// Explicit argument indices may be used to re-order output. 
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") 
// -> " d c b a" 

// Optional locale as the first argument can be used to get 
// locale-specific formatting of numbers. The precision and width can be 
// given to round and align the value. 
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E); 
// -> "e = +2,7183" 

// The '(' numeric flag may be used to format negative numbers with 
// parentheses rather than a minus sign. Group separators are 
// automatically inserted. 
formatter.format("Amount gained or lost since last statement: $ %(,.2f", 
       balanceDelta); 
// -> "Amount gained or lost since last statement: $ (6,217.58)" 
8

Este es el código que necesita:

float myNumber = 43.4; 
DecimalFormat formatter = new DecimalFormat("0000.00"); //use # for optional digits instead of 0 
System.out.println(formatter.format(myNumber)); 
+1

Por cierto yo estaba codificando en algunos otros lenguajes de programación hoy en día. Así es como me olvidé de escribir el nombre de la variable my_number en la famosa convención de programación de Java: CamelCase. Debería ser myNumber según la convención. ;) –

+2

En lugar de comentar para explicar 'my_number' vs. myNumber, edite su respuesta. – GreenMatt

+1

No creo que tenga suficientes representantes para editar sus respuestas todavía. Pero yo si. –

Cuestiones relacionadas