2009-07-09 11 views
8

Problema simple que no puedo resolver ...¿Cómo imprimo el carácter '%' con 'printf'?

¿Cómo puedo imprimir un carácter '%' dentro de una cadena printf? El siguiente código lo imprime, pero también da un error de "conversión no válida".

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f\%\n", $total, $max15, ($max15/$total*100); 

debe hacer salir algo como:

 0000 HRS => 3125.19 898.02 28.7% 

Respuesta

22

Se podría usar %%, no \% (desde el hombre printf)

+0

+1 para ganar la carrera de velocidad :) –

+2

¿El "hombre printf" realmente le dice acerca de la función Perl en su sistema? En el mío, solo habla sobre el programa de línea de comandos. Puedo obtener la función C con "man 3 printf"; si quiero leer sobre la función Perl, uso "perldoc -f printf" –

+0

Al menos parece que todos estamos de acuerdo en la respuesta. – mirod

5

En lugar de \% utiliza %% :)

2

Use %% para imprimir un solo%

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%%\n", $total, $max15, ($max15/$total*100); 
5

%% para un solo%

3

En retrospectiva, había una alternativa cruda que habría hecho lo mismo.

Imprimir el símbolo '%' como una cadena:

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%s\n", $total, $max15, ($max15/$total*100), "%"; 
1

Esto es un poco complicado porque la documentación de la plantilla para printf es en realidad en la documentación para sprintf. Tienes que atrapar esa línea en el medio del párrafo para saber mirar allí.