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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts