Cálculo com casa decimal

1. Cálculo com casa decimal

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 15/04/2018 - 18:21h

Pessoas ... tô apanhando pra fazer um cálculo aqui ... preciso q ele me retorne só 1 casa decimal

tentativas
mauricio@phantom ~ $ a=1000;b=132;echo "scale=3;$b/$a*100"|bc
13.200
mauricio@phantom ~ $ a=1000;b=132;echo "scale=2;$b/$a*100"|bc
13.00
mauricio@phantom ~ $ a=1000;b=132;echo "scale=1;$b/$a*100"|bc
10.0
mauricio@phantom ~ $


qual o problema dessa bagaça ???


  


2. Re: Cálculo com casa decimal

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/04/2018 - 15:58h

Mauriciodez escreveu:

Pessoas ... tô apanhando pra fazer um cálculo aqui ... preciso q ele me retorne só 1 casa decimal

tentativas
mauricio@phantom ~ $ a=1000;b=132;echo "scale=3;$b/$a*100"|bc
13.200
mauricio@phantom ~ $ a=1000;b=132;echo "scale=2;$b/$a*100"|bc
13.00
mauricio@phantom ~ $ a=1000;b=132;echo "scale=1;$b/$a*100"|bc
10.0
mauricio@phantom ~ $


qual o problema dessa bagaça ???


Boa tarde Mauricio.
Não entendi o problema . . . .
Da forma que vc postou está mostrando o nº de casas decimais definido em "scale".
Testes:
for scale in {1..5};do bc <<< "scale=${scale};(132/1000)";done 

.1
.13
.132
.1320
.13200
Uma outra forma é com o awk:
awk '{printf "%.1f\n" ,$1/$2}' <<< "132 1000" 

0.1

Att.:
Marcelo Oliver





3. Re: Cálculo com casa decimal

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 16/04/2018 - 16:22h

msoliver escreveu:
Boa tarde Mauricio.
Não entendi o problema . . . .
Da forma que vc postou está mostrando o nº de casas decimais definido em "scale".


Uai velho .. o problema é q não está funcionando ... veja

aqui funciona de boa ...
mauricio@phantom ~ $ a=1000;b=132;echo "scale=3;$b/$a*100"|bc
13.200


aqui não ... o resultado era pra ser 13.20 e não 13.00
mauricio@phantom ~ $ a=1000;b=132;echo "scale=2;$b/$a*100"|bc
13.00

aqui tb não ... o resultado era pra ser 13.2 e não 10.0
mauricio@phantom ~ $ a=1000;b=132;echo "scale=1;$b/$a*100"|bc
10.0


viu o problema aí ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: Cálculo com casa decimal

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 16/04/2018 - 18:17h

Mauriciodez escreveu:

msoliver escreveu:
Boa tarde Mauricio.
Não entendi o problema . . . .
Da forma que vc postou está mostrando o nº de casas decimais definido em "scale".


Uai velho .. o problema é q não está funcionando ... veja

aqui funciona de boa ...
mauricio@phantom ~ $ a=1000;b=132;echo "scale=3;$b/$a*100"|bc
13.200


aqui não ... o resultado era pra ser 13.20 e não 13.00
mauricio@phantom ~ $ a=1000;b=132;echo "scale=2;$b/$a*100"|bc
13.00

aqui tb não ... o resultado era pra ser 13.2 e não 10.0
mauricio@phantom ~ $ a=1000;b=132;echo "scale=1;$b/$a*100"|bc
10.0


viu o problema aí ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


O problema aí está na sequência de cálculos no bc, veja:
scale=2
132/1000
.13
.13*100
13.00

Ou seja, quando ele faz a divisão 132/100 o resultado é 0,13 com scale=2 ou 0,1 com scale=1. Depois é que vem a multiplicação com 100 (0,13x100=13 ; 0,1x100=10)



5. Re: Cálculo com casa decimal

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 16/04/2018 - 18:55h

Tenta assim:
a=1000;b=132;echo "$b/$a*100"|bc -l|awk '{printf("%.1f\n" ,$1)}'  



6. Re: Cálculo com casa decimal

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 16/04/2018 - 19:09h

Ryuk escreveu:

Tenta assim:
a=1000;b=132;echo "$b/$a*100"|bc -l|awk '{printf("%.1f\n" ,$1)}'  


eu fiz assim
total=1000;used=132;awk '{printf "%.1f\n" ,$1/$2*100}' <<< "$used $total" 


o problema de usar AWK nesse caso, é q não faço a menor idéia da sintaxe, então toda vez que precisar eu vou ter q sair procurando onde está o comando, por isso que eu queria fazer só com o "scale" e "bc".

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



7. Re: Cálculo com casa decimal

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/04/2018 - 19:11h

Mauriciodez escreveu:

msoliver escreveu:
Boa tarde Mauricio.
Não entendi o problema . . . .
Da forma que vc postou está mostrando o nº de casas decimais definido em "scale".


Uai velho .. o problema é q não está funcionando ... veja

aqui funciona de boa ...
mauricio@phantom ~ $ a=1000;b=132;echo "scale=3;$b/$a*100"|bc
13.200


aqui não ... o resultado era pra ser 13.20 e não 13.00
mauricio@phantom ~ $ a=1000;b=132;echo "scale=2;$b/$a*100"|bc
13.00

aqui tb não ... o resultado era pra ser 13.2 e não 10.0
mauricio@phantom ~ $ a=1000;b=132;echo "scale=1;$b/$a*100"|bc
10.0


viu o problema aí ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Mauricio, agora "vi" o problema ....
É o que o Ryuk explicou...
Veja se atende:
bc <<< "scale=3;(132/1000)"|awk '{printf "%.1f\n" ,$1*100}'
13.2




8. Re: Cálculo com casa decimal

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 17/04/2018 - 01:31h

Use o printf pra definir a quantidade de casas decimais desejadas.
Ex.:
$ printf '%0.1f\n' $(echo '132 / 1000 * 100' | bc -l)
13,2



9. Re: Cálculo com casa decimal

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 17/04/2018 - 08:23h

me expliquem essa sintaxe do PRINTF por gentileza.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



10. Re: Cálculo com casa decimal

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/04/2018 - 13:57h

Mauriciodez escreveu:

me expliquem essa sintaxe do PRINTF por gentileza.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


printf "%.2f\n" 0,123456789 #Onde %.2f é que define a quantidade de casas decimais
No exemplo abaixo criei um laço de "0" a "5" definindo a var "CD" (Casa decimal)
for CD in {0..5};do bc <<< "scale=3;(132/1000)"|awk '{printf "%.'$CD'f\n" ,$1*100}';done
13
13.2
13.20
13.200
13.2000
13.20000

Outro exemplo:
PI="3,141592653589793"
for CD in {0..15};do 
printf "%02d => %."$CD"f\n" $CD $PI;
done

00 => 3
01 => 3,1
02 => 3,14
03 => 3,142
04 => 3,1416
05 => 3,14159
06 => 3,141593
07 => 3,1415927
08 => 3,14159265
09 => 3,141592654
10 => 3,1415926536
11 => 3,14159265359
12 => 3,141592653590
13 => 3,1415926535898
14 => 3,14159265358979
15 => 3,141592653589793

Resumindo:
printf "%.CASADECIMALf" NÚMERO DECIMAL
OBS.: Note que a pontuação do "NÚMERO DECIMAL" deve ser com virgula.

Marcelo Oliver








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts