printf("%f")

printf("%f")

por Thiago Rodrigues Colucci -
Número de respostas: 2
Gostaria de saber se, assim como no comando para imprimir interios com separação de espaços(%7d , por exemplo), existe um comando para separa espaços num float(ou double ou long double) antes da virgula(pois creio que para depois da virgula é %.4f)
obrigado
Em resposta à Thiago Rodrigues Colucci

Re: printf("%f")

por Francisco Reverbel -
Existe sim. Não é bem "separação de espaços" e sim definição do espaço total (número de casas) ocupado pelo valor impresso: "%8.4f" especifica que um float ou double deve ser impresso ocupando um total de 8 casas, das quais 4 correspondem a dígitos após o ponto decimal. Como o ponto decimal ocupa uma casa, a especificação de formato "%8.4f" diz implicitamente que a parte inteira do número deve ocupar 3 casas. No caso de um número negativo, essas 3 casas incluem o sinal ("-").

Se você escrever só "%8.4f", o número será impresso alinhado à direita no campo de 8 casas, isto é, ele será encostado na casa mais à direita e as casas vazias à esquerda serão preenchidas com espaços. Para especificar alinhamendo à esquerda, use "%-8.4f".

Exemplo de impressão de 1.0 com "%8.4f" e com "%-8.4f":

printf("*12345678*\n");
printf("[%8.4f]\n", 1.0);
printf("[%-8.4f]\n", 1.0);

Saída:

*12345678*
[  1.0000]
[1.0000  ]