Comando printf [RESOLVIDO]

1. Comando printf [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 03/01/2014 - 15:10h

root@hotpc:/home/brainiac# printf "%.3f\n" `echo "scale=2 ; 100/6" | bc`
bash: printf: 16.66: invalid number
0,000


Caros amigos o comando acima deveria retornar 33.3300.

Como resolvo?



Sei que algo relacionado ao Pt-Br do Debian , pois:

root@hotpc:/home/brainiac# printf "%.2f\n" 32.3
bash: printf: 32.3: invalid number
0,00

root@hotpc:/home/brainiac# printf "%.2f\n" 32,3
32,30






  


2. MELHOR RESPOSTA

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 03/01/2014 - 16:12h

Caros amigos o comando acima deveria retornar 33.3300.


!? Como se "100 / 6" é igual a "16.6666..."!

Você está confundindo as coisas cara! Vamos lá, faça:


LANG=C printf "%.3f\n" `echo "scale=2; 100/6" | bc` 

ou
LANG=C printf "%.3f\n" $(bc <<< scale=2\;100/6) 


1 - LANG=C força o formato de saída para o padrão POSIX
2 - Note que "%.3f" determina a quantidade de casas decimais que serão mostradas após o ponto! Nesse caso serão 3.

Ah, note que no printf você determinou como 3 a quantidade de casas decimais na saída, MAS no bc você determinou 2 como quantidade de saída, portanto o printf irá completar com zeros o restante que falta! ;)




3. Re: Comando printf [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 03/01/2014 - 16:42h

VAleu Smarcell

A ap estava impressa errada com 33.3300, mas sem o macete do LANG=C

não conseguiria, valeu






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts