Número decimal Shell script - cortando zero a esquerda

1. Número decimal Shell script - cortando zero a esquerda

davidson gonçalves junior
davidson305

(usa CentOS)

Enviado em 24/08/2020 - 16:40h

Boa tarde

Prezados, sei que este assunto já foi discutido varias vezes mas n estou conseguindo solucionar meu erro. Estou fazendo divisão por um número maior.
EX:
24/60 = 0,41


Segue:

a2= echo "scale=2;($a1/60)" |bc

EX:
Meu resultado é .41, não consigo entender por que ele esta cortando o "zero" a esquerda, sempre mostra o valor correto porém sem o "zero"



  


2. Re: Número decimal Shell script - cortando zero a esquerda

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 24/08/2020 - 18:37h

O bc não mostra o zero, não tem como fazer isso pelo bc.
Só tratando o resultado (gambiarra) para colocar o zero onde deveria.

Veja:
https://ios.developreference.com/article/25363320/How+do+I+get+bc(1)+to+print+the+leading+zero%3F
https://stackoverflow.com/questions/8402181/how-do-i-get-bc1-to-print-the-leading-zero

Outras formas de calcular no bash:
https://www.shell-tips.com/bash/math-arithmetic-calculation/


3. Re: Número decimal Shell script - cortando zero a esquerda

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/08/2020 - 21:29h


davidson305 escreveu:

Boa tarde

Prezados, sei que este assunto já foi discutido varias vezes mas n estou conseguindo solucionar meu erro. Estou fazendo divisão por um número maior.
EX:
24/60 = 0,41


Segue:

a2= echo "scale=2;($a1/60)" |bc

EX:
Meu resultado é .41, não consigo entender por que ele esta cortando o "zero" a esquerda, sempre mostra o valor correto porém sem o "zero"

SUGESTÕES:
Gambiarra:
bc <<<"scale=4;24/60"|sed 's/^\./0./'
AWK
awk '{printf "%.2f\n" ,($1/$2)}' <<< "25 60"
0.42
awk '{printf "%.4f\n" ,($1/$2)}' <<< "25 60"
0.4167


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. Re: Número decimal Shell script - cortando zero a esquerda

lurke
thelurkening

(usa Outra)

Enviado em 24/08/2020 - 23:00h

Usaria o printf que é para essas coisas, inclusive para acertar os decimais..

Não entendi bem seu exemplo, mas ficaria algo como:


escala=2
a1=24
a2="$( echo "scale=$escala; $a1 / 60" | bc )"
printf '%.*f\n' "$escala" "$a2"


A escala máxima do printf é 16..

Com zshell:
escala=2
float -F "$escala" a1 a2
a1=24
a2="$(( a1 / 60 ))"
echo "$a2"


Também o limite de placas decimais é 16..


5. Re: Número decimal Shell script - cortando zero a esquerda

davidson gonçalves junior
davidson305

(usa CentOS)

Enviado em 25/08/2020 - 08:21h

Ja deu para ter uma luz do que fazer, obrigado a todos pelo apoio!


6. Re: Número decimal Shell script - cortando zero a esquerda

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 25/08/2020 - 16:14h

Você também pode tentar fazer isso diretamente no próprio bc.

$ echo "scale = 2; x = 24 / 60; if (x < 1) print 0; x" | bc
$ 0.41









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts