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
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 ]
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 ]
obrigado pela explicação
grato, Thiago
grato, Thiago